3 #ifndef DUNE_COMMON_CONCEPT_HH 4 #define DUNE_COMMON_CONCEPT_HH 44 template<
class... BaseConcepts>
60 template<
class C,
class... T>
77 template<
class C,
class... T,
78 decltype(std::declval<C>().require(std::declval<T>()...), 0) =0>
85 template<
class C,
class... T>
99 template<
class...T,
class C0,
class... CC>
107 template<
class C,
class... T>
117 template<
class C,
class... T,
118 decltype(
typename C::BaseConceptList(), 0) = 0>
131 template<
class C,
class... T>
171 template<
class C,
class... T>
188 template<
class C,
class Tuple>
191 template<
class Accumulated,
class T>
194 using type =
typename std::integral_constant<bool, Accumulated::value and models<C, T>()>;
208 template<
class C,
class Tuple>
223 template<bool b, typename std::enable_if<b, int>::type = 0>
230 template<
class C,
class... T,
typename std::enable_if<
models<C, T...>(),
int>::type = 0>
238 template<
class C,
class... T,
typename std::enable_if<
models<C, T...>(),
int>::type = 0>
246 template<
class C,
class Tuple,
typename std::enable_if<tupleEntriesModel<C, Tuple>(),
int>::type = 0>
254 template<
class From,
class To,
255 typename std::enable_if< std::is_convertible<From, To>::value,
int>::type = 0>
263 template<
class To,
class From,
264 typename std::enable_if< std::is_convertible<From, To>::value,
int>::type = 0>
282 template<
class Base,
class Derived,
283 typename std::enable_if< std::is_base_of<Base, Derived>::value,
int>::type = 0>
291 template<
class Base,
class Derived,
292 typename std::enable_if< std::is_base_of<Base, Derived>::value,
int>::type = 0>
300 template<
class A,
class B,
301 typename std::enable_if< std::is_same<A, B>::value,
int>::type = 0>
318 #endif // DUNE_COMMON_CONCEPT_HH Base class for refined concepts.
Definition: concept.hh:45
TypeList< BaseConcepts... > BaseConceptList
Definition: concept.hh:47
constexpr bool requireConvertible()
Definition: concept.hh:256
constexpr auto tupleEntriesModel() -> typename Imp::TupleEntriesModelHelper< C, Tuple >::Result
Definition: concept.hh:209
constexpr bool requireTrue()
Definition: concept.hh:224
Definition: concept.hh:192
constexpr bool models()
Definition: concept.hh:132
typename ReduceTuple< AccumulateFunctor, Tuple, std::true_type >::type Result
Definition: concept.hh:196
constexpr bool requireConcept()
Definition: concept.hh:231
constexpr bool requireSameType()
Definition: concept.hh:302
constexpr bool requireBaseOf()
Definition: concept.hh:284
Dune namespace.
Definition: alignment.hh:10
constexpr bool requireConceptForTupleEntries()
Definition: concept.hh:247
constexpr std::false_type matchesRequirement(PriorityTag< 0 >)
Definition: concept.hh:86
Definition: concept.hh:189
A simple type list.
Definition: typelist.hh:30
Utilities for type computations, constraining overloads, ...
F< Accumulated, Value >::type type
Result of the reduce operation.
Definition: tupleutility.hh:605
Contains utility classes which can be used with std::tuple.
constexpr bool modelsConceptList(TypeList< C0, CC... >)
Definition: concept.hh:100
constexpr auto models()
Check if concept is modeled by given types.
Definition: concept.hh:172
Helper class for tagging priorities.
Definition: typeutilities.hh:71
std::integral_constant< bool, value > bool_constant
A template alias for std::integral_constant<bool, value>
Definition: type_traits.hh:98
constexpr bool modelsConcept(PriorityTag< 1 >)
Definition: concept.hh:119
constexpr bool requireType()
Definition: concept.hh:275
Helper class for tagging priorities.
Definition: typeutilities.hh:59
typename std::integral_constant< bool, Accumulated::value and models< C, T >()> type
Definition: concept.hh:194