Awali
Another Weighted Automata library
Data Structures | Namespaces | Typedefs | Functions
is_iterable.hxx File Reference
#include <type_traits>
#include <awali/common/priority.hh>
#include <iterator>

Go to the source code of this file.

Data Structures

struct  awali::internal::std_all< T >
 
struct  awali::internal::std_all< false, Tail... >
 
struct  awali::internal::std_all< true, Tail... >
 
struct  awali::internal::std_all<>
 

Namespaces

 awali
 Main namespace of Awali.
 
 awali::internal
 Namespace containing implementation details of elements common to sttc and dyn layers (not stable).
 

Typedefs

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

Functions

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
 

Data Structure Documentation

◆ awali::internal::std_all

struct awali::internal::std_all

template<bool... T>
struct awali::internal::std_all< T >