#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 >