|
YODA - Yet more Objects for Data Analysis 2.0.2
|
Go to the documentation of this file.
15 template < typename T, typename= void>
19 struct Derefable<T, std::void_t< decltype(*std::declval<T>())> > : std::true_type {};
23 template < typename T, typename=AnalysisObject>
27 struct DerefableToAO<T, typename std::conditional<std::is_base_of<AnalysisObject,
28 typename std::decay< decltype(*std::declval<T>()) >::type>::value,
29 AnalysisObject, void>::type> : std::true_type {};
36 template< typename T, typename = void>
40 struct Iterable<T, std::void_t<std::decay_t<decltype(std::begin(std::declval<const T&>()))>,
41 std::decay_t<decltype(std::end(std::declval<const T&>()))>>> : std::true_type { };
43 template< typename... T>
44 inline constexpr bool isIterable = std::conjunction<Iterable<T>...>::value;
47 template< typename T, typename = void>
51 struct CIterable<T, std::void_t<decltype(std::declval<typename T::const_iterator>())>> : std::true_type { };
53 template< typename... T>
54 inline constexpr bool isCIterable = std::conjunction<CIterable<T>...>::value;
57 template< typename T, typename VAL, typename = void>
60 template< typename T, typename VAL>
61 struct Pushable<T, VAL, std::void_t<decltype(std::declval<T>().push_back( std::declval<VAL>() ))>>
65 template< typename T, typename = void>
69 struct hasFillDim<T, std::void_t<decltype(typename T::FillDim{})>> : std::true_type { };
Anonymous namespace to limit visibility.
constexpr bool isIterable
constexpr bool isCIterable
SFINAE struct to check for dereferencing to an AnalysisObject (reference) at compile time.
SFINAE definition of dereferenceability trait, cf. Boost has_dereference.
|