Tatooine
invoke_reversed.h
Go to the documentation of this file.
1#ifndef TATOOINE_INVOKE_REVERSED_H
2#define TATOOINE_INVOKE_REVERSED_H
3//==============================================================================
4#include <functional>
5#include <utility>
6//==============================================================================
7namespace tatooine {
8//==============================================================================
9auto constexpr invoke_reversed(auto&& f, auto&& param0)
10 -> decltype(auto) requires std::invocable<decltype(f), decltype(param0)> {
11 return std::invoke(f, std::forward<decltype(param0)>(param0));
12}
13//------------------------------------------------------------------------------
14auto constexpr invoke_reversed(auto&& f, auto&& param0, auto&& param1,
15 auto&&... params) -> decltype(auto) {
16 return invoke_reversed(
17 [&](auto&&... params) -> decltype(auto) {
18 return std::invoke(std::forward<decltype(f)>(f),
19 std::forward<decltype(params)>(params)...,
20 std::forward<decltype(param0)>(param0));
21 },
22 std::forward<decltype(param1)>(param1),
23 std::forward<decltype(params)>(params)...);
24}
25//==============================================================================
26} // namespace tatooine
27//==============================================================================
28#endif
Definition: algorithm.h:6
auto constexpr invoke_reversed(auto &&f, auto &&param0) -> decltype(auto)
Definition: invoke_reversed.h:9