17 template<
typename Indices,
typename F,
typename... BoundArgs>
18 class BindFrontFunction;
20 template<
types::size_t... indices,
typename F,
typename... BoundArgs>
21 class BindFrontFunction<meta::ListV<indices...>, F, BoundArgs...> :
public pipeline::EnablePipeline {
23 template<
typename Fun,
typename... Args>
24 constexpr BindFrontFunction(types::InPlace, Fun&& function, Args&&... bound_arguments)
25 : m_function(util::forward<Fun>(function)), m_bound_arguments(util::forward<Args>(bound_arguments)...) {}
27 constexpr BindFrontFunction(BindFrontFunction
const&) =
default;
28 constexpr BindFrontFunction(BindFrontFunction&&) =
default;
30 auto operator=(BindFrontFunction
const&) -> BindFrontFunction& =
delete;
31 auto operator=(BindFrontFunction&&) -> BindFrontFunction& =
delete;
33 template<
typename... Args>
34 requires(concepts::Invocable<F&, BoundArgs&..., Args...>)
35 constexpr auto operator()(Args&&... args) & ->
decltype(
auto) {
39 template<
typename... Args>
40 requires(concepts::Invocable<F
const&, BoundArgs
const&..., Args...>)
41 constexpr auto operator()(Args&&... args)
const& ->
decltype(
auto) {
45 template<
typename... Args>
46 requires(concepts::Invocable<F &&, BoundArgs && ..., Args...>)
47 constexpr auto operator()(Args&&... args) && ->
decltype(
auto) {
49 util::forward<Args>(args)...);
52 template<
typename... Args>
53 requires(concepts::Invocable<F
const &&, BoundArgs
const && ..., Args...>)
54 constexpr auto operator()(Args&&... args)
const&& ->
decltype(
auto) {
56 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 bind_front(F &&f, Args &&... args)
Definition bind_front.h:68
constexpr auto invoke
Definition invoke.h:100
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