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