|
My Project
|
implementation details for template meta programming More...
Typedefs | |
| template<class ... Tuples> | |
| using | ConCatTuples = decltype(std::tuple_cat(std::declval< Tuples >()...)) |
| helper alias to concatenate multiple tuples | |
Functions | |
| template<class P > | |
| constexpr auto | isDefinedProperty (int) -> decltype(std::integral_constant< bool, !std::is_same< typename P::type, UndefinedProperty >::value >{}) |
| check if a property P is defined | |
| template<class P > | |
| constexpr std::true_type | isDefinedProperty (...) |
| fall back if a Property is defined | |
| template<class T > | |
| constexpr auto | hasParentTypeTag (int) -> decltype(std::declval< typename T::InheritsFrom >(), std::true_type{}) |
| check if a TypeTag inherits from other TypeTags | |
| template<class T > | |
| constexpr std::false_type | hasParentTypeTag (...) |
| fall back if a TypeTag doesn't inherit | |
| template<class S > | |
| constexpr auto | isDefinedSplice (int) -> decltype(std::integral_constant< bool, !std::is_same< typename S::type, std::tuple<> >::value >{}) |
| check if a splice S is defined | |
| template<class S > | |
| constexpr std::true_type | isDefinedSplice (...) |
| fall back if a splice is defined | |
implementation details for template meta programming