12 template<concepts::MemberFunctionPointer
F,
typename FirstArg,
typename... Args>
14 constexpr auto invoke_impl(F f, FirstArg&& first_arg, Args&&... args)
15 ->
decltype((util::forward<FirstArg>(first_arg).*f)(util::forward<Args>(args)...)) {
16 return (util::forward<FirstArg>(first_arg).*f)(util::forward<Args>(args)...);
21 constexpr auto invoke_impl(F f, FirstArg&& first_arg, Args&&... args)
22 ->
decltype((first_arg.get().*f)(util::forward<Args>(args)...)) {
23 return (first_arg.get().*f)(util::forward<Args>(args)...);
27 constexpr auto invoke_impl(F f, FirstArg&& first_arg, Args&&... args)
28 ->
decltype(((*util::forward<FirstArg>(first_arg)).*f)(util::forward<Args>(args)...)) {
29 return ((*util::forward<FirstArg>(first_arg)).*f)(util::forward<Args>(args)...);
32 template<concepts::MemberObjectPo
inter F,
typename Arg>
34 constexpr auto invoke_impl(F f, Arg&& arg) ->
decltype(util::forward<Arg>(arg).*f) {
35 return util::forward<Arg>(arg).*f;
38 template<concepts::MemberObjectPo
inter F,
typename Arg>
40 constexpr auto invoke_impl(F f, Arg&& arg) ->
decltype(arg.get().*f) {
44 template<concepts::MemberObjectPo
inter F,
typename Arg>
45 constexpr auto invoke_impl(F f, Arg&& arg) ->
decltype((*util::forward<Arg>(arg)).*f) {
46 return (*util::forward<Arg>(arg)).*f;
49 template<
typename F,
typename... Args>
50 constexpr auto invoke_impl(F&& f, Args&&... args) ->
decltype(util::forward<F>(f)(util::forward<Args>(args)...)) {
51 return util::forward<F>(f)(util::forward<Args>(args)...);
57template<
typename... Ts>
62template<
typename... Ts>
68template<
typename F,
typename R,
typename... Args>
72template<
typename R,
typename... Ts>
79 template<
typename F,
typename... Args>
88 template<
typename F,
typename... Args>
90 constexpr auto operator()(F&& f, Args&&... args)
const -> R {
107using concepts::Invocable;
108using concepts::InvocableTo;
Definition language.h:373
Implicit conversion for this test refers to the ability to return a value of function from a type.
Definition operations.h:89
Definition language.h:200
Definition any_storable.h:9
concept F
Definition zip_transform.h:12
Definition bind_back.h:16
constexpr auto invoke_impl(F f, FirstArg &&first_arg, Args &&... args) -> decltype((util::forward< FirstArg >(first_arg).*f)(util::forward< Args >(args)...))
Definition invoke.h:14
constexpr auto invoke
Definition invoke.h:100
constexpr auto invoke_r
Definition invoke.h:103
auto declval() -> meta::AddRValueReference< T >
Definition declval.h:8
Definition zstring_parser.h:9