11 template<
typename T,
typename... Args>
12 class MakeDeferredFunctor {
14 MakeDeferredFunctor() =
default;
16 MakeDeferredFunctor(MakeDeferredFunctor
const&) =
default;
17 MakeDeferredFunctor(MakeDeferredFunctor&&) =
default;
19 template<
typename... Values>
20 requires((concepts::ConstructibleFrom<Args, Values> && ...))
21 constexpr explicit MakeDeferredFunctor(InPlace, Values&&... values)
22 : m_args(util::forward<Values>(values)...) {}
24 auto operator=(MakeDeferredFunctor
const&) -> MakeDeferredFunctor& =
delete;
25 auto operator=(MakeDeferredFunctor&&) -> MakeDeferredFunctor& =
delete;
27 constexpr auto operator()() & -> T
28 requires concepts::ConstructibleFrom<T, Args&...>
33 constexpr auto operator()() const& -> T
34 requires concepts::ConstructibleFrom<T, Args const&...>
39 constexpr auto operator()() && -> T
40 requires concepts::ConstructibleFrom<T, Args&&...>
45 constexpr auto operator()() const&& -> T
46 requires concepts::ConstructibleFrom<T, Args const&&...>
56 struct MakeDeferredFunction {
57 template<concepts::DecayConstructible... Args>
58 constexpr auto operator()(Args&&... args)
const {
59 return MakeDeferredFunctor<T, meta::Decay<Args>...>(
in_place, util::forward<Args>(args)...);
constexpr auto make_deferred
Creates a deferred function object.
Definition make_deferred.h:75
constexpr auto make_from_tuple
Definition make_from_tuple.h:31
Tuple(Types...) -> Tuple< Types... >
Definition any_storable.h:9
constexpr auto in_place
Definition in_place.h:8