dune-common  2.5-git
Classes | Namespaces | Functions
concept.hh File Reference
#include <type_traits>
#include <utility>
#include <tuple>
#include <dune/common/typeutilities.hh>
#include <dune/common/typelist.hh>
#include <dune/common/tupleutility.hh>
#include <dune/common/std/type_traits.hh>

Go to the source code of this file.

Classes

struct  Dune::Concept::Refines< BaseConcepts >
 Base class for refined concepts. More...
 
struct  Dune::Concept::Imp::TupleEntriesModelHelper< C, Tuple >
 
struct  Dune::Concept::Imp::TupleEntriesModelHelper< C, Tuple >::AccumulateFunctor< Accumulated, T >
 

Namespaces

 Dune
 Dune namespace.
 
 Dune::Concept
 Namespace for concepts.
 
 Dune::Concept::Imp
 

Functions

template<class C , class... T>
constexpr bool Dune::Concept::Imp::models ()
 
template<class C , class... T, decltype(std::declval< C >().require(std::declval< T >()...), 0) = 0>
constexpr std::true_type Dune::Concept::Imp::matchesRequirement (PriorityTag< 1 >)
 
template<class C , class... T>
constexpr std::false_type Dune::Concept::Imp::matchesRequirement (PriorityTag< 0 >)
 
template<class... T>
constexpr bool Dune::Concept::Imp::modelsConceptList (TypeList<>)
 
template<class... T, class C0 , class... CC>
constexpr bool Dune::Concept::Imp::modelsConceptList (TypeList< C0, CC... >)
 
template<class C , class... T>
constexpr bool Dune::Concept::Imp::modelsConcept (PriorityTag< 0 >)
 
template<class C , class... T, decltype(typename C::BaseConceptList(), 0) = 0>
constexpr bool Dune::Concept::Imp::modelsConcept (PriorityTag< 1 >)
 
template<class C , class... T>
constexpr auto Dune::models ()
 Check if concept is modeled by given types. More...
 
template<class C , class Tuple >
constexpr auto Dune::Concept::tupleEntriesModel () -> typename Imp::TupleEntriesModelHelper< C, Tuple >::Result
 
template<bool b, typename std::enable_if< b, int >::type = 0>
constexpr bool Dune::Concept::requireTrue ()
 
template<class C , class... T, typename std::enable_if< models< C, T... >(), int >::type = 0>
constexpr bool Dune::Concept::requireConcept ()
 
template<class C , class... T, typename std::enable_if< models< C, T... >(), int >::type = 0>
constexpr bool Dune::Concept::requireConcept (T &&... t)
 
template<class C , class Tuple , typename std::enable_if< tupleEntriesModel< C, Tuple >(), int >::type = 0>
constexpr bool Dune::Concept::requireConceptForTupleEntries ()
 
template<class From , class To , typename std::enable_if< std::is_convertible< From, To >::value, int >::type = 0>
constexpr bool Dune::Concept::requireConvertible ()
 
template<class To , class From , typename std::enable_if< std::is_convertible< From, To >::value, int >::type = 0>
constexpr bool Dune::Concept::requireConvertible (const From &)
 
template<typename T >
constexpr bool Dune::Concept::requireType ()
 
template<class Base , class Derived , typename std::enable_if< std::is_base_of< Base, Derived >::value, int >::type = 0>
constexpr bool Dune::Concept::requireBaseOf ()
 
template<class Base , class Derived , typename std::enable_if< std::is_base_of< Base, Derived >::value, int >::type = 0>
constexpr bool Dune::Concept::requireBaseOf (const Derived &)
 
template<class A , class B , typename std::enable_if< std::is_same< A, B >::value, int >::type = 0>
constexpr bool Dune::Concept::requireSameType ()