3 #ifndef DUNE_COMMON_OVERLOADSET_HH
4 #define DUNE_COMMON_OVERLOADSET_HH
21 template<
class F0,
class... F>
27 template<
class FF0,
class... FF>
29 Base(std::forward<FF>(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>
96 Base(std::forward<FF>(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)
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)
Definition: overloadset.hh:44
auto orderedOverload(F &&...f)
Create an ordered overload set.
Definition: overloadset.hh:165
Definition: overloadset.hh:22
Traits class to check if function is callable.
Definition: type_traits.hh:149
OrderedOverloadSet(FF0 &&f0, FF &&...ff)
Definition: overloadset.hh:95
Definition: overloadset.hh:89
auto overload(F &&...f)
Create an overload set.
Definition: overloadset.hh:79
OrderedOverloadSet(FF0 &&f0)
Definition: overloadset.hh:126
OverloadSet(FF0 &&f0, FF &&...ff)
Definition: overloadset.hh:28
decltype(auto) operator()(Args &&...args)
Definition: overloadset.hh:103