14#ifndef DUMUX_TYPETRAITS_ISVALID_HH
15#define DUMUX_TYPETRAITS_ISVALID_HH
25template <
typename Expression>
36 template <
typename Argument>
37 constexpr auto testArgument_(
int )
const
38 ->
decltype(std::declval<Expression>()(std::declval<Argument>()), std::true_type())
39 {
return std::true_type(); }
42 template <
typename Argument>
43 constexpr std::false_type testArgument_(...)
const
44 {
return std::false_type(); }
49 template <
typename Argument>
51 {
return testArgument_<Argument>(
int()); }
54 template <
typename Argument>
56 {
return testArgument_<Argument>(
int()); }
80template <
typename Expression>
81constexpr auto isValid(
const Expression& t)
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
Definition: isvalid.hh:27
constexpr auto operator()(const Argument &arg) const
Definition: isvalid.hh:50
constexpr auto check() const
Definition: isvalid.hh:55