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