implementation details for template meta programming
More...
|
struct | GetDefined |
| helper struct to get the first property that is defined in the TypeTag hierarchy More...
|
|
struct | GetDefined< TypeTag, Property, std::tuple< FirstTypeTag, Args... > > |
|
struct | GetDefined< TypeTag, Property, std::tuple< LastTypeTag > > |
|
struct | GetDefinedSplice |
| helper struct to get the first property that is defined in the TypeTag hierarchy More...
|
|
struct | GetDefinedSplice< TypeTag, std::tuple< FirstTypeTag, Args... > > |
|
struct | GetDefinedSplice< TypeTag, std::tuple< LastTypeTag > > |
|
struct | GetNextSpliceTypeTag |
| helper struct to iterate over the TypeTag hierarchy More...
|
|
struct | GetNextSpliceTypeTag< TypeTag, std::tuple< FirstTypeTag, Args... >, std::enable_if_t< hasParentTypeTag< FirstTypeTag >(int{}), void > > |
|
struct | GetNextSpliceTypeTag< TypeTag, std::tuple< FirstTypeTag, Args... >, std::enable_if_t<!hasParentTypeTag< FirstTypeTag >(int{}), void > > |
|
struct | GetNextSpliceTypeTag< TypeTag, std::tuple< LastTypeTag >, std::enable_if_t< hasParentTypeTag< LastTypeTag >(int{}), void > > |
|
struct | GetNextSpliceTypeTag< TypeTag, std::tuple< LastTypeTag >, std::enable_if_t<!hasParentTypeTag< LastTypeTag >(int{}), void > > |
|
struct | GetNextTypeTag |
| helper struct to iterate over the TypeTag hierarchy More...
|
|
struct | GetNextTypeTag< TypeTag, Property, std::tuple< FirstTypeTag, Args... >, std::enable_if_t< hasParentTypeTag< FirstTypeTag >(int{}), void > > |
|
struct | GetNextTypeTag< TypeTag, Property, std::tuple< FirstTypeTag, Args... >, std::enable_if_t<!hasParentTypeTag< FirstTypeTag >(int{}), void > > |
|
struct | GetNextTypeTag< TypeTag, Property, std::tuple< LastTypeTag >, std::enable_if_t< hasParentTypeTag< LastTypeTag >(int{}), void > > |
|
struct | GetNextTypeTag< TypeTag, Property, std::tuple< LastTypeTag >, std::enable_if_t<!hasParentTypeTag< LastTypeTag >(int{}), void > > |
|
struct | GetPropImpl |
| helper struct to extract get the Property specilization given a TypeTag, asserts that the property is defined More...
|
|
struct | GetSplicePropImpl |
|
|
template<class ... Tuples> |
using | ConCatTuples = decltype(std::tuple_cat(std::declval< Tuples >()...)) |
| helper alias to concatenate multiple tuples More...
|
|
|
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 More...
|
|
template<class P > |
constexpr std::true_type | isDefinedProperty (...) |
| fall back if a Property is defined More...
|
|
template<class T > |
constexpr auto | hasParentTypeTag (int) -> decltype(std::declval< typename T::InheritsFrom >(), std::true_type{}) |
| check if a TypeTag inherits from other TypeTags More...
|
|
template<class T > |
constexpr std::false_type | hasParentTypeTag (...) |
| fall back if a TypeTag doesn't inherit More...
|
|
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 More...
|
|
template<class S > |
constexpr std::true_type | isDefinedSplice (...) |
| fall back if a splice is defined More...
|
|
implementation details for template meta programming
◆ ConCatTuples
template<class ... Tuples>
helper alias to concatenate multiple tuples
◆ hasParentTypeTag() [1/2]
template<class T >
constexpr std::false_type Opm::Properties::Detail::hasParentTypeTag |
( |
|
... | ) |
|
|
constexpr |
fall back if a TypeTag doesn't inherit
◆ hasParentTypeTag() [2/2]
template<class T >
constexpr auto Opm::Properties::Detail::hasParentTypeTag |
( |
int |
| ) |
-> decltype(std::declval<typename T::InheritsFrom>(), std::true_type{})
|
|
constexpr |
check if a TypeTag inherits from other TypeTags
◆ isDefinedProperty() [1/2]
template<class P >
constexpr std::true_type Opm::Properties::Detail::isDefinedProperty |
( |
|
... | ) |
|
|
constexpr |
fall back if a Property is defined
◆ isDefinedProperty() [2/2]
template<class P >
constexpr auto Opm::Properties::Detail::isDefinedProperty |
( |
int |
| ) |
-> decltype(std::integral_constant<bool, !std::is_same<typename P::type, UndefinedProperty>::value>{})
|
|
constexpr |
check if a property P is defined
◆ isDefinedSplice() [1/2]
template<class S >
constexpr std::true_type Opm::Properties::Detail::isDefinedSplice |
( |
|
... | ) |
|
|
constexpr |
fall back if a splice is defined
◆ isDefinedSplice() [2/2]
template<class S >
constexpr auto Opm::Properties::Detail::isDefinedSplice |
( |
int |
| ) |
-> decltype(std::integral_constant<bool, !std::is_same<typename S::type, std::tuple<>>::value>{})
|
|
constexpr |
check if a splice S is defined
|