15 template<
class Fn1,
class Fn2,
class... Args>
16 constexpr auto operator()(Fn1&& f1, Fn2&& f2, Args&&... args)
const noexcept(
17 noexcept( std::invoke(std::forward<Fn1>(f1), std::invoke(std::forward<Fn2>(f2), std::forward<Args>(args)...))))
18 ->
decltype(std::invoke(std::forward<Fn1>(f1), std::invoke(std::forward<Fn2>(f2), std::forward<Args>(args)...)))
19 {
return std::invoke(std::forward<Fn1>(f1), std::invoke(std::forward<Fn2>(f2), std::forward<Args>(args)...)); }
23 template<
class Fn1,
class Fn2>
24 constexpr auto operator()(Fn1&& f1, Fn2&& f2)
const noexcept(
25 noexcept(
partial(
closure{}, std::forward<Fn1>(f1), std::forward<Fn2>(f2))))
26 ->
decltype(
partial(closure{}, std::forward<Fn1>(f1), std::forward<Fn2>(f2)))
27 {
return partial(closure{}, std::forward<Fn1>(f1), std::forward<Fn2>(f2)); }
31 inline namespace cpo {
constexpr partial< detail::compose_op > compose
Function composition.
Definition: compose.hpp:35
Definition: compose.hpp:14
Definition: compose.hpp:13
Implements a perfect-forwarding call wrapper.
Definition: partial.hpp:63