12 template<concepts::DecayConstructible F>
13 struct FlipFunction :
public pipeline::EnablePipeline {
16 constexpr FlipFunction(types::InPlace, Fn&& function) : m_function(util::forward<Fn>(function)) {}
18 constexpr FlipFunction(FlipFunction
const&) =
default;
19 constexpr FlipFunction(FlipFunction&&) =
default;
21 constexpr auto operator=(FlipFunction
const&) -> FlipFunction& =
delete;
22 constexpr auto operator=(FlipFunction&&) -> FlipFunction& =
delete;
24 template<
typename T,
typename U>
25 requires(concepts::Invocable<F&, T, U>)
26 constexpr auto operator()(U&& a, T&& b) & ->
decltype(
auto) {
27 return function::invoke(m_function, util::forward<U>(b), util::forward<T>(a));
30 template<
typename T,
typename U>
31 requires(concepts::Invocable<F const&, T, U>)
32 constexpr auto operator()(U&& a, T&& b)
const& ->
decltype(
auto) {
33 return function::invoke(m_function, util::forward<U>(b), util::forward<T>(a));
36 template<
typename T,
typename U>
37 requires(concepts::Invocable<F &&, T, U>)
38 constexpr auto operator()(U&& a, T&& b) && ->
decltype(
auto) {
39 return function::invoke(util::move(m_function), util::forward<U>(b), util::forward<T>(a));
42 template<
typename T,
typename U>
43 requires(concepts::Invocable<F const &&, T, U>)
44 constexpr auto operator()(U&& a, T&& b)
const&& ->
decltype(
auto) {
45 return function::invoke(util::move(m_function), util::forward<U>(b), util::forward<T>(a));
53template<concepts::DecayConstructible F>
constexpr auto invoke
Definition invoke.h:100
constexpr auto flip(F &&function)
Definition flip.h:54
constexpr auto in_place
Definition in_place.h:8
Definition any_storable.h:9