17 template<
typename Indices,
typename F,
typename... BoundArgs>
18 class BindBackFunction;
20 template<
types::size_t... indices,
typename F,
typename... BoundArgs>
21 class BindBackFunction<meta::ListV<indices...>, F, BoundArgs...> :
public pipeline::EnablePipeline {
23 template<
typename Fun,
typename... Args>
24 constexpr BindBackFunction(types::InPlace, Fun&& function, Args&&... bound_arguments)
25 : m_function(util::forward<Fun>(function)), m_bound_arguments(util::forward<Args>(bound_arguments)...) {}
27 constexpr BindBackFunction(BindBackFunction
const&) =
default;
28 constexpr BindBackFunction(BindBackFunction&&) =
default;
30 auto operator=(BindBackFunction
const&) -> BindBackFunction& =
delete;
31 auto operator=(BindBackFunction&&) -> BindBackFunction& =
delete;
33 template<
typename... Args>
34 requires(concepts::Invocable<F&, Args..., BoundArgs&...>)
35 constexpr auto operator()(Args&&... args) & ->
decltype(
auto) {
39 template<
typename... Args>
40 requires(concepts::Invocable<F
const&, Args..., BoundArgs
const&...>)
41 constexpr auto operator()(Args&&... args)
const& ->
decltype(
auto) {
45 template<
typename... Args>
46 requires(concepts::Invocable<F &&, Args..., BoundArgs && ...>)
47 constexpr auto operator()(Args&&... args) && ->
decltype(
auto) {
48 return function::invoke(util::move(m_function), util::forward<Args>(args)...,
52 template<
typename... Args>
53 requires(concepts::Invocable<F
const &&, Args..., BoundArgs
const && ...>)
54 constexpr auto operator()(Args&&... args)
const&& ->
decltype(
auto) {
55 return function::invoke(util::move(m_function), util::forward<Args>(args)...,
65template<
typename F,
typename... Args>
66requires(concepts::ConstructibleFrom<meta::Decay<F>, F> &&
67 (concepts::ConstructibleFrom<meta::Decay<Args>, Args> && ...))
constexpr auto invoke
Definition invoke.h:100
constexpr auto bind_back(F &&f, Args &&... args)
Definition bind_back.h:68
std::size_t size_t
Definition size_t.h:12
constexpr auto in_place
Definition in_place.h:8
constexpr auto get(T &&value) -> decltype(auto)
Definition get.h:8
Tuple(Types...) -> Tuple< Types... >
Definition any_storable.h:9