11 #ifndef __stir_typetraits_H__ 12 #define __stir_typetraits_H__ 22 #include <type_traits> 48 struct has_method_foo<T, typename =
void> : std::false_type {};
49 struct has_method_foo<T,
std::void_t<decltype(std::declval<T>().foo())>> : std::true_type {};
54 template <
typename T,
typename =
void>
60 struct has_iterator<T, std::void_t<typename T::iterator>> : std::true_type
69 template <
typename T,
typename =
void>
75 struct has_full_iterator<T, std::void_t<typename T::full_iterator>> : std::true_type
Helper to check if a type has a full_iterator typedef (e.g. Array<2,int>)
Definition: type_traits.h:70
constexpr bool has_iterator_and_no_full_iterator_v
Bool set to has_iterator_and_no_full_iterator<T>::value.
Definition: type_traits.h:91
Helper to check if the type has an iterator but no full_iterator typedef (e.g. std::vector<int>) ...
Definition: type_traits.h:85
constexpr bool has_full_iterator_v
Bool set to has_full_iterator<T>::value.
Definition: type_traits.h:81
basic configuration include file
constexpr bool has_iterator_v
Bool set to has_iterator<T>::value.
Definition: type_traits.h:66
Helper to check if a type has an iterator typedef.
Definition: type_traits.h:55