Loading [MathJax]/extensions/tex2jax.js
Iros
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
Loading...
Searching...
No Matches
flip.h
Go to the documentation of this file.
1#pragma once
2
5#include "di/meta/util.h"
6#include "di/types/in_place.h"
7#include "di/util/forward.h"
8#include "di/util/move.h"
9
10namespace di::function {
11namespace detail {
12 template<concepts::DecayConstructible F>
14 public:
15 template<typename Fn>
16 constexpr FlipFunction(types::InPlace, Fn&& function) : m_function(util::forward<Fn>(function)) {}
17
18 constexpr FlipFunction(FlipFunction const&) = default;
19 constexpr FlipFunction(FlipFunction&&) = default;
20
21 constexpr auto operator=(FlipFunction const&) -> FlipFunction& = delete;
22 constexpr auto operator=(FlipFunction&&) -> FlipFunction& = delete;
23
24 template<typename T, typename 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));
28 }
29
30 template<typename T, typename 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));
34 }
35
36 template<typename T, typename 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));
40 }
41
42 template<typename T, typename 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));
46 }
47
48 private:
49 F m_function;
50 };
51}
52
53template<concepts::DecayConstructible F>
54constexpr auto flip(F&& function) {
56}
57}
58
59namespace di {
60using function::flip;
61}
Definition invoke.h:58
Definition bind_back.h:16
Definition as_bool.h:8
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 vocab.h:96
Definition zstring_parser.h:9
constexpr auto operator=(FlipFunction const &) -> FlipFunction &=delete
constexpr FlipFunction(types::InPlace, Fn &&function)
Definition flip.h:16
constexpr FlipFunction(FlipFunction &&)=default
constexpr auto operator=(FlipFunction &&) -> FlipFunction &=delete
constexpr FlipFunction(FlipFunction const &)=default
Definition in_place.h:4