dune-pdelab  2.4.1
Classes | Namespaces | Functions
concept.hh File Reference
#include <type_traits>
#include <utility>
#include <tuple>
#include <dune/pdelab/common/typeutilities.hh>
#include <dune/pdelab/common/typelist.hh>

Go to the source code of this file.

Classes

struct  Dune::PDELab::Concept::Refines< BaseConcepts >
 Base class for refined concepts. More...
 

Namespaces

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

Functions

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