#include <type_traits>
#include <awali/common/priority.hh>
#include <iterator>
Go to the source code of this file.
|
| awali |
| Main namespace of Awali.
|
|
| awali::internal |
| Namespace containing implementation details of elements common to sttc and dyn layers (not stable).
|
|
|
template<typename T > |
using | awali::is_iterable = decltype(internal::is_iterable_aux1< T >(priority::value)) |
| Trait to test whether type T can be iterated over. More...
|
|
template<typename T , typename X > |
using | awali::is_iterable_with = decltype(internal::is_iterable_aux2< T, X >(priority::value)) |
| Trait to test whether type T can be iterated over and assign its values to type X. More...
|
|
|
template<typename T , typename P > |
std::false_type | awali::internal::is_iterable_aux1 (priority::BOTTOM< P >) |
|
template<typename T , typename P > |
auto | awali::internal::is_iterable_aux1 (priority::TOP< P >) -> decltype(std::begin(std::declval< T & >()) !=std::end(std::declval< T & >()), void(),++std::declval< decltype(std::begin(std::declval< T & >()))& >(), void(*std::begin(std::declval< T & >())), std::true_type{}) |
|
template<typename T , typename X , typename P > |
std::false_type | awali::internal::is_iterable_aux2 (priority::BOTTOM< P >) |
|
template<typename T , typename X , typename P > |
auto | awali::internal::is_iterable_aux2 (priority::TOP< P >) -> typename std::enable_if< std_all< is_iterable< T >::value, std::is_convertible< decltype(*std::begin(std::declval< T & >())), X >::value >::value, std::true_type >::type |
|
◆ awali::internal::std_all
struct awali::internal::std_all |
template<bool... T>
struct awali::internal::std_all< T >