Basic Type traits in DuMux
More...
|
file | propertysystem.hh |
| The Dumux property system, traits with inheritance.
|
|
file | isvalid.hh |
| A helper function for class member function introspection.
|
|
file | matrix.hh |
| Type traits to be used with matrix types.
|
|
file | problem.hh |
| Type traits for problem classes.
|
|
file | state.hh |
| Type traits to be used with matrix types.
|
|
file | typetraits.hh |
| Type traits.
|
|
file | utility.hh |
| Utilities for template meta programming.
|
|
file | vector.hh |
| Type traits to be used with vector types.
|
|
|
template<typename Expression > |
constexpr auto | Dumux::isValid (const Expression &t) |
| A function that creates a test functor to do class member introspection at compile time.
|
|
◆ isValid()
template<typename Expression >
constexpr auto Dumux::isValid |
( |
const Expression & | t | ) |
|
|
constexpr |
- Returns
- a functor that returns true if the expression is valid with a given type / object Usage: If you want to test if a class has the member function resize(std::size_t) create a test functor
auto hasResize =
isValid([](
auto&& c) ->
decltype(c.resize(std::size_t(1))) {}; });
constexpr auto isValid(const Expression &t)
A function that creates a test functor to do class member introspection at compile time.
Definition isvalid.hh:81
- Note
- hasResize can be constexpr in C++17 which allows lambdas in constexpr functions The you can use the test in compile time expressions
template<class T>
auto otherFunc(const T& t)
-> typename std::enable_if_t<!decltype(hasResize(myvector))::value, double>
{ return 4.0; }