3 #ifndef DUNE_COMMON_OVERLOADSET_HH 4 #define DUNE_COMMON_OVERLOADSET_HH 21 template<
class F0,
class... F>
27 template<
class FF0,
class... FF>
30 F0(
std::forward<FF0>(f0))
35 using Base::operator();
45 F0(
std::forward<FF0>(f0))
88 template<
class F0,
class... F>
94 template<
class FF0,
class... FF>
97 F0(
std::forward<FF0>(f0))
101 template<
class... Args,
103 decltype(
auto) operator()(Args&&... args)
105 return F0::operator()(std::forward<Args>(args)...);
111 template<
class... Args,
113 decltype(
auto) operator()(Args&&... args)
115 return Base::operator()(std::forward<Args>(args)...);
127 F0(
std::forward<FF0>(f0))
132 template<
class... Args>
133 decltype(
auto) operator()(Args&&... args)
135 static_assert(
Std::is_callable<F0(Args&&...)>::value,
"No matching overload found in OrderedOverloadSet");
136 return F0::operator()(std::forward<Args>(args)...);
174 #endif // DUNE_COMMON_OVERLOADSET_HH OverloadSet(FF0 &&f0, FF &&... ff)
Definition: overloadset.hh:28
auto orderedOverload(F &&... f)
Create an ordered overload set.
Definition: overloadset.hh:165
Definition: overloadset.hh:22
Dune namespace.
Definition: alignment.hh:10
Definition: overloadset.hh:89
Traits class to check if function is callable.
Definition: type_traits.hh:149
OrderedOverloadSet(FF0 &&f0)
Definition: overloadset.hh:126
OverloadSet(FF0 &&f0)
Definition: overloadset.hh:44
OrderedOverloadSet(FF0 &&f0, FF &&... ff)
Definition: overloadset.hh:95
auto overload(F &&... f)
Create an overload set.
Definition: overloadset.hh:79