|
| template<class C , class Tuple > |
| constexpr auto | tupleEntriesModel () |
| |
| template<bool b, typename std::enable_if< b, int >::type = 0> |
| constexpr bool | requireTrue () |
| |
| template<class C , class... T, typename std::enable_if< models< C, T... >(), int >::type = 0> |
| constexpr bool | requireConcept () |
| |
| template<class C , class... T, typename std::enable_if< models< C, T... >(), int >::type = 0> |
| constexpr bool | requireConcept (T &&...) |
| |
| template<class C , class Tuple , typename std::enable_if< tupleEntriesModel< C, Tuple >(), int >::type = 0> |
| constexpr bool | requireConceptForTupleEntries () |
| |
| template<class From , class To , typename std::enable_if< std::is_convertible< From, To >::value, int >::type = 0> |
| constexpr bool | requireConvertible () |
| |
| template<class To , class From , typename std::enable_if< std::is_convertible< From, To >::value, int >::type = 0> |
| constexpr bool | requireConvertible (const From &) |
| |
| template<typename T > |
| constexpr bool | requireType () |
| |
| template<class Base , class Derived , typename std::enable_if< std::is_base_of< Base, Derived >::value, int >::type = 0> |
| constexpr bool | requireBaseOf () |
| |
| template<class Base , class Derived , typename std::enable_if< std::is_base_of< Base, Derived >::value, int >::type = 0> |
| constexpr bool | requireBaseOf (const Derived &) |
| |
| template<class A , class B , typename std::enable_if< std::is_same< A, B >::value, int >::type = 0> |
| constexpr bool | requireSameType () |
| |
Namespace for concepts.
This namespace contains helper functions for concept definitions and the concept definitions themselves.
The Number concept is satisfied if the type N can act as a scalar in the context of (hierarchically blocked) containers.
Number types are possible element types of (hierarchically blocked) matrices and vectors, such as FieldMatrix, FieldVector, BCRSMatrix, BlockVector, MultiTypeBlockVector, etc. It allows, for example, to define break conditions in recursive algorithms and are used as value initializers and scalar factors in scaling operations.
Types that can act as number types include the arithmetic types like double, int, or float, and the std::complex<U> types if U itself is a scalar type. It is possible to register used-defined types, e.g., extended precision types or automatic differentiation types, or anything else that might sensibly be an element of a matrix or vector. Therefore, the traits class Dune::IsNumber can be specialized.
- Note
- The precise semantics of number types are only vaguely specified. It should behave similar to arithmetic types, e.g., provide arithmetic operations, and should be considered a field type in the mathematical sense.