version 3.10-dev
Typetraits

Basic Type traits in DuMux More...

Description

Files

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  periodic.hh
 Type traits to detect periodicity support.
 
file  common/typetraits/problem.hh
 Type traits for problem classes.
 
file  state.hh
 Type traits to be used with matrix types.
 
file  common/typetraits/typetraits.hh
 Type traits.
 
file  utility.hh
 Utilities for template meta programming.
 
file  vector.hh
 Type traits to be used with vector types.
 

Classes

struct  Dumux::ProblemTraits< Problem >
 Type traits for problem classes. More...
 

Functions

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. More...
 

Function Documentation

◆ 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
static constexpr auto hasResize()
Definition: variablesbackend.hh:48
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; }