4#include <dune/common/typetraits.hh>
6#define AMDIS_CONCAT_IMPL( x, y ) x##y
7#define AMDIS_MACRO_CONCAT( x, y ) AMDIS_CONCAT_IMPL( x, y )
11 #define REQUIRES_(...)
12 #define CONCEPT constexpr
13 #define CHECK_CONCEPT(...)
15 #define REQUIRES(...) std::enable_if_t<__VA_ARGS__ , int> = 0
16 #define REQUIRES_(...) std::enable_if_t<__VA_ARGS__ , int>
17 #define CONCEPT constexpr
18 #define CHECK_CONCEPT(...) static __VA_ARGS__ AMDIS_MACRO_CONCAT( _concept_check_, __COUNTER__ )
27 template <
class Concept,
class = std::
void_t<>>
32 template <
class Concept,
class... Ts>
33 struct models<Concept(Ts...), std::void_t< decltype(std::declval<Concept>().require(std::declval<Ts>()...)) >>
41 template <
class Concept>
42 constexpr bool models = Impl_::models<Concept>::value;
44 template <
class Concept>
45 using models_t = Impl_::models<Concept>;