|
template<concepts::MemberFunctionPointer F, typename FirstArg, typename... Args>
requires (concepts::BaseOf<meta::MemberPointerClass<F>, meta::Decay<FirstArg>>) |
constexpr auto | di::function::detail::invoke_impl (F f, FirstArg &&first_arg, Args &&... args) -> decltype((util::forward< FirstArg >(first_arg).*f)(util::forward< Args >(args)...)) |
|
template<concepts::MemberFunctionPointer F, typename FirstArg, typename... Args>
requires (concepts::ReferenceWrapper<meta::Decay<FirstArg>>) |
constexpr auto | di::function::detail::invoke_impl (F f, FirstArg &&first_arg, Args &&... args) -> decltype((first_arg.get().*f)(util::forward< Args >(args)...)) |
|
template<concepts::MemberFunctionPointer F, typename FirstArg, typename... Args> |
constexpr auto | di::function::detail::invoke_impl (F f, FirstArg &&first_arg, Args &&... args) -> decltype(((*util::forward< FirstArg >(first_arg)).*f)(util::forward< Args >(args)...)) |
|
template<concepts::MemberObjectPointer F, typename Arg>
requires (concepts::BaseOf<meta::MemberPointerClass<F>, meta::Decay<Arg>>) |
constexpr auto | di::function::detail::invoke_impl (F f, Arg &&arg) -> decltype(util::forward< Arg >(arg).*f) |
|
template<concepts::MemberObjectPointer F, typename Arg>
requires (concepts::ReferenceWrapper<meta::Decay<Arg>>) |
constexpr auto | di::function::detail::invoke_impl (F f, Arg &&arg) -> decltype(arg.get().*f) |
|
template<concepts::MemberObjectPointer F, typename Arg> |
constexpr auto | di::function::detail::invoke_impl (F f, Arg &&arg) -> decltype((*util::forward< Arg >(arg)).*f) |
|
template<typename F, typename... Args> |
constexpr auto | di::function::detail::invoke_impl (F &&f, Args &&... args) -> decltype(util::forward< F >(f)(util::forward< Args >(args)...)) |
|