3 #ifndef DUNE_PDELAB_COMMON_CONCEPT_HH 4 #define DUNE_PDELAB_COMMON_CONCEPT_HH 20 template<
class C,
class... T>
48 template<
class... BaseConcepts>
75 template<
class C,
class... T,
76 decltype(std::declval<C>().require(std::declval<T>()...), 0) =0>
83 template<
class C,
class... T>
97 template<
class...T,
class C0,
class... CC>
105 template<
class C,
class... T>
115 template<
class C,
class... T,
116 decltype(
typename C::BaseConceptList(), 0) = 0>
127 template<
class C,
class First>
129 -> std::integral_constant<bool, models<C, First>()>
132 template<
class C,
class First,
class... Other>
134 -> std::integral_constant<bool, models<C, First>() and allModel<C, Other...>()>
137 template<
class C,
class... T>
139 -> decltype(allModel<C, T...>())
151 template<
class C,
class Tuple>
153 -> decltype(Imp::tupleEntriesModel<C>(std::declval<Tuple>()))
166 template<bool b, typename std::enable_if<b, int>::type = 0>
173 template<
class C,
class... T,
typename std::enable_if<
models<C, T...>(),
int>::type = 0>
181 template<
class C,
class... T,
typename std::enable_if<
models<C, T...>(),
int>::type = 0>
189 template<
class C,
class Tuple,
typename std::enable_if<tupleEntriesModel<C, Tuple>(),
int>::type = 0>
197 template<
class From,
class To,
206 template<
class To,
class From,
207 typename std::enable_if< std::is_convertible<From, To>::value,
int>::type = 0>
225 template<
class Base,
class Derived,
234 template<
class Base,
class Derived,
235 typename std::enable_if< std::is_base_of<Base, Derived>::value,
int>::type = 0>
243 template<
class A,
class B,
281 template<
class C,
class... T>
295 #endif // DUNE_PDELAB_COMMON_CONCEPT_HH constexpr bool modelsConceptList(TypeList< C0, CC... >)
Definition: concept.hh:98
constexpr bool modelsConcept(PriorityTag< 0 >)
Definition: concept.hh:106
constexpr auto allModel() -> std::integral_constant< bool, models< C, First >() and allModel< C, Other... >()>
Definition: concept.hh:133
static const unsigned int value
Definition: gridfunctionspace/tags.hh:177
Helper class for tagging priorities.
Definition: typeutilities.hh:60
Definition: adaptivity.hh:27
constexpr bool requireConceptForTupleEntries()
Definition: concept.hh:190
constexpr bool modelsConcept(PriorityTag< 1 >)
Definition: concept.hh:117
constexpr auto tupleEntriesModel() -> decltype(Imp::tupleEntriesModel< C >(std::declval< Tuple >()))
Definition: concept.hh:152
TypeList< BaseConcepts... > BaseConceptList
Definition: concept.hh:51
constexpr bool requireSameType()
Definition: concept.hh:245
constexpr bool requireType()
Definition: concept.hh:218
Base class for refined concepts.
Definition: concept.hh:49
constexpr std::false_type matchesRequirement(PriorityTag< 0 >)
Definition: concept.hh:84
constexpr bool requireConvertible()
Definition: concept.hh:199
Utilities for type computations, constarining overloads, ...
constexpr bool requireConcept()
Definition: concept.hh:174
A simple type list.
Definition: typelist.hh:31
constexpr bool models()
Check if concept is modeled by given types.
Definition: concept.hh:282
constexpr bool requireTrue()
Definition: concept.hh:167
Helper class for tagging priorities.
Definition: typeutilities.hh:72
constexpr bool requireBaseOf()
Definition: concept.hh:227