opm-simulators
Loading...
Searching...
No Matches
Opm::Properties::Detail Namespace Reference

implementation details for template meta programming More...

Classes

struct  GetDefined
 helper struct to get the first property that is defined in the TypeTag hierarchy More...
struct  GetNextTypeTag
 helper struct to iterate over the TypeTag hierarchy More...
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  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  GetDefined< TypeTag, Property, std::tuple< LastTypeTag > >
struct  GetDefined< TypeTag, Property, std::tuple< FirstTypeTag, Args... > >
struct  GetDefinedSplice
 helper struct to get the first property that is defined in the TypeTag hierarchy More...
struct  GetNextSpliceTypeTag
 helper struct to iterate over the TypeTag hierarchy More...
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  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  GetDefinedSplice< TypeTag, std::tuple< LastTypeTag > >
struct  GetDefinedSplice< TypeTag, std::tuple< FirstTypeTag, Args... > >
struct  GetPropImpl
 helper struct to extract get the Property specilization given a TypeTag, asserts that the property is defined More...
struct  GetSplicePropImpl

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

Detailed Description

implementation details for template meta programming