Iros
 
Loading...
Searching...
No Matches
di::function::detail Namespace Reference

Classes

class  BindBackFunction
 
class  BindBackFunction< meta::ListV< indices... >, F, BoundArgs... >
 
class  BindFrontFunction
 
class  BindFrontFunction< meta::ListV< indices... >, F, BoundArgs... >
 
class  ChainFunction
 
class  ComposeFunction
 
struct  FlipFunction
 
class  GeneratorIterator
 
class  GeneratorPromiseBase
 
struct  IndexDispatch
 
struct  IndexDispatchImpl
 
struct  IntoVoidFunction
 
struct  InvokeFunction
 
struct  InvokeRFunction
 
struct  MakeDeferredFunction
 
class  MakeDeferredFunctor
 
class  NotFnFunction
 
struct  OverloadFunction
 
struct  OverloadImpl
 
class  PipedFunction
 
struct  UncurryFunction
 
class  UncurryImpl
 
struct  UnpackFunction
 
struct  UnpackFunction< meta::ListV< values... > >
 
struct  Value
 
struct  ValueFunction
 
struct  YCombinator
 
struct  YCombinatorFunction
 

Concepts

concept  TupleInvoceable
 
concept  CanUncurry
 

Typedefs

template<typename Ref, typename Value>
using GeneratorValue = meta::Conditional<concepts::LanguageVoid<Value>, meta::RemoveCVRef<Ref>, Value>
 
template<typename Ref, typename Value>
using GeneratorReference = meta::Conditional<concepts::LanguageVoid<Value>, Ref&&, Ref>
 
template<typename Ref>
using GeneratorYield = meta::Conditional<concepts::Reference<Ref>, Ref, Ref const&>
 
template<typename... Args>
using AsTuple = decltype(detail::do_tuple_cat(di::declval<Args>()...))
 

Functions

template<concepts::MemberFunctionPointer F, typename FirstArg, typename... Args>
requires (concepts::BaseOf<meta::MemberPointerClass<F>, meta::Decay<FirstArg>>)
constexpr auto 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 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 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 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 invoke_impl (F f, Arg &&arg) -> decltype(arg.get().*f)
 
template<concepts::MemberObjectPointer F, typename Arg>
constexpr auto invoke_impl (F f, Arg &&arg) -> decltype((*util::forward< Arg >(arg)).*f)
 
template<typename F, typename... Args>
constexpr auto invoke_impl (F &&f, Args &&... args) -> decltype(util::forward< F >(f)(util::forward< Args >(args)...))
 
template<typename... Funs>
 OverloadImpl (Funs &&...) -> OverloadImpl< Funs... >
 
template<concepts::TupleLike Tup>
constexpr auto tuple_forward (Tup &&tuple)
 
template<typename T>
constexpr auto tuple_forward (T &&value)
 
template<typename... Args>
constexpr auto do_tuple_cat (Args &&... args)
 

Typedef Documentation

◆ AsTuple

template<typename... Args>
using di::function::detail::AsTuple = decltype(detail::do_tuple_cat(di::declval<Args>()...))

◆ GeneratorReference

template<typename Ref, typename Value>
using di::function::detail::GeneratorReference = meta::Conditional<concepts::LanguageVoid<Value>, Ref&&, Ref>

◆ GeneratorValue

template<typename Ref, typename Value>
using di::function::detail::GeneratorValue = meta::Conditional<concepts::LanguageVoid<Value>, meta::RemoveCVRef<Ref>, Value>

◆ GeneratorYield

template<typename Ref>
using di::function::detail::GeneratorYield = meta::Conditional<concepts::Reference<Ref>, Ref, Ref const&>

Function Documentation

◆ do_tuple_cat()

template<typename... Args>
auto di::function::detail::do_tuple_cat ( Args &&... args)
constexpr

◆ invoke_impl() [1/7]

template<typename F, typename... Args>
auto di::function::detail::invoke_impl ( F && f,
Args &&... args ) -> decltype(util::forward<F>(f)(util::forward<Args>(args)...))
constexpr

◆ invoke_impl() [2/7]

template<concepts::MemberObjectPointer F, typename Arg>
auto di::function::detail::invoke_impl ( F f,
Arg && arg ) -> decltype((*util::forward<Arg>(arg)).*f)
constexpr

◆ invoke_impl() [3/7]

template<concepts::MemberObjectPointer F, typename Arg>
requires (concepts::ReferenceWrapper<meta::Decay<Arg>>)
auto di::function::detail::invoke_impl ( F f,
Arg && arg ) -> decltype(arg.get().*f)
constexpr

◆ invoke_impl() [4/7]

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

◆ invoke_impl() [5/7]

template<concepts::MemberFunctionPointer F, typename FirstArg, typename... Args>
auto di::function::detail::invoke_impl ( F f,
FirstArg && first_arg,
Args &&... args ) -> decltype(((*util::forward<FirstArg>(first_arg)).*f)(util::forward<Args>(args)...))
constexpr

◆ invoke_impl() [6/7]

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

◆ invoke_impl() [7/7]

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

◆ OverloadImpl()

template<typename... Funs>
di::function::detail::OverloadImpl ( Funs && ...) -> OverloadImpl< Funs... >

◆ tuple_forward() [1/2]

template<typename T>
auto di::function::detail::tuple_forward ( T && value)
constexpr

◆ tuple_forward() [2/2]

template<concepts::TupleLike Tup>
auto di::function::detail::tuple_forward ( Tup && tuple)
constexpr