3.6-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Files | Classes | Functions
Typetraits

Basic Type traits in DuMux More...

Description

Basic Type traits in DuMux

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  common/typetraits/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.
 

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

A function that creates a test functor to do class member introspection at compile time.

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:93
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; }