MCRO
C++23 utilities for Unreal Engine.
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
Mcro::FunctionTraits Namespace Reference

Namespaces

namespace  Detail
 

Data Structures

struct  TDeferFunctionArguments
 Defers a set of arguments for a function call later with its first argument. This is useful for developing fluent API operators. More...
 
struct  TFunctionTraits
 Get signature information about any function declaring type (function pointer or functor structs including lambda functions). It should be used in other templates. More...
 
struct  TFunctionTraits< ReturnIn(*)(Args...)>
 Specialization extracting the types from the compound function pointer type. More...
 
struct  TFunctionTraits< ReturnIn(Args...)>
 Specialization extracting the types from the compound function type. More...
 
struct  TFunctionTraits< ReturnIn(ClassIn::*)(Args...) const >
 Specialization extracting the types from the compound function pointer type of a const member function. More...
 
struct  TFunctionTraits< ReturnIn(ClassIn::*)(Args...)>
 Specialization extracting the types from the compound function pointer type of a member function. More...
 
struct  TFunctionTraits< T >
 Specialization for functor structs / lambda functions. More...
 

Concepts

concept  CFunctorObject
 Concept constraining input T to a lambda function or a functor object.
 
concept  CFunction_IsMember
 
concept  CFunction_IsConst
 Shorthand for getting the constness of a member function.
 
concept  CFunctionLike
 A concept accepting any function like entity (function pointer or functor object)
 
concept  CFunctionPtr
 A concept accepting function pointer types.
 
concept  CHasFunction
 
concept  CInstanceMethod
 Tests if a provided class member function pointer instance (not type!) is indeed an instance member method. Negating it can assume static class member function.
 

Typedefs

template<typename T >
using TFunction_Arguments = typename TFunctionTraits<std::decay_t<T>>::Arguments
 Shorthand for getting a tuple representing the function arguments.
 
template<typename T >
using TFunction_ArgumentsDecay = typename TFunctionTraits<std::decay_t<T>>::ArgumentsDecay
 Shorthand for getting a tuple representing the decayed function arguments.
 
template<typename T , int I>
using TFunction_Arg = typename TFunctionTraits<std::decay_t<T>>::template Arg<I>
 Shorthand for getting a type of a function argument at given position I.
 
template<typename T , int I>
using TFunction_ArgDecay = typename TFunctionTraits<std::decay_t<T>>::template ArgDecay<I>
 Shorthand for getting a decayed type of a function argument at given position I.
 
template<typename T >
using TFunction_Return = typename TFunctionTraits<std::decay_t<T>>::Return
 Shorthand for getting a function return type.
 
template<typename T >
using TFunction_ReturnDecay = typename TFunctionTraits<std::decay_t<T>>::Return
 Shorthand for getting a function return type discarding qualifiers.
 
template<typename T >
using TFunction_Signature = typename TFunctionTraits<std::decay_t<T>>::Signature
 Shorthand for getting a pur function signature.
 
template<CFunction_IsMember T>
using TFunction_Class = typename TFunctionTraits<std::decay_t<T>>::Class
 Shorthand for getting the class of a member function.
 
template<typename Return , typename Tuple >
using TFunctionFromTuple = typename Detail::TFunctionFromTuple_Struct<Return, std::decay_t<Tuple>>::Type
 Compose a function type from a tuple of arguments and a return type.
 
template<typename Return , typename DstFunction >
using TSetReturn = TFunctionFromTuple<Return, TFunction_Arguments<DstFunction>>
 Override the return type of an input function signature.
 
template<typename Return , typename DstFunction >
using TSetReturnDecay = TFunctionFromTuple<std::decay_t<Return>, TFunction_Arguments<DstFunction>>
 Override the return type of an input function signature, and discard its qualifiers.
 
template<typename SrcFunction , typename DstFunction >
using TCopyReturn = TSetReturn<TFunction_Return<SrcFunction>, DstFunction>
 Copy the return type from source function signature to the destination one.
 
template<typename SrcFunction , typename DstFunction >
using TCopyReturnDecay = TSetReturnDecay<TFunction_ReturnDecay<SrcFunction>, DstFunction>
 Copy the return type from source function signature to the destination one, and discard its qualifiers.
 

Functions

template<typename Function >
TFunction_Return< Function > InvokeWithTuple (Function &&function, TFunction_Arguments< Function > const &arguments)
 A clone of std::apply for Unreal tuples which also supports function pointers. TL;DR: It calls a function with arguments supplied from a tuple.
 
template<CFunctionPtr Function, CHasFunction< Function > Object>
TFunction_Return< Function > InvokeWithTuple (Object *object, Function &&function, TFunction_Arguments< Function > const &arguments)
 A clone of std::apply for Unreal tuples which also supports function pointers. This overload can bind an object TL;DR: It calls a function with arguments supplied from a tuple.
 

Variables

template<typename T >
constexpr size_t TFunction_ArgCount = TFunctionTraits<std::decay_t<T>>::ArgumentCount
 Shorthand for getting a function argument count.
 

Typedef Documentation

◆ TCopyReturn

template<typename SrcFunction , typename DstFunction >
using Mcro::FunctionTraits::TCopyReturn = TSetReturn<TFunction_Return<SrcFunction>, DstFunction>

Copy the return type from source function signature to the destination one.

Definition at line 219 of file FunctionTraits.h.

◆ TCopyReturnDecay

template<typename SrcFunction , typename DstFunction >
using Mcro::FunctionTraits::TCopyReturnDecay = TSetReturnDecay<TFunction_ReturnDecay<SrcFunction>, DstFunction>

Copy the return type from source function signature to the destination one, and discard its qualifiers.

Definition at line 223 of file FunctionTraits.h.

◆ TFunction_Arg

template<typename T , int I>
using Mcro::FunctionTraits::TFunction_Arg = typename TFunctionTraits<std::decay_t<T>>::template Arg<I>

Shorthand for getting a type of a function argument at given position I.

Definition at line 142 of file FunctionTraits.h.

◆ TFunction_ArgDecay

template<typename T , int I>
using Mcro::FunctionTraits::TFunction_ArgDecay = typename TFunctionTraits<std::decay_t<T>>::template ArgDecay<I>

Shorthand for getting a decayed type of a function argument at given position I.

Definition at line 146 of file FunctionTraits.h.

◆ TFunction_Arguments

template<typename T >
using Mcro::FunctionTraits::TFunction_Arguments = typename TFunctionTraits<std::decay_t<T>>::Arguments

Shorthand for getting a tuple representing the function arguments.

Definition at line 134 of file FunctionTraits.h.

◆ TFunction_ArgumentsDecay

template<typename T >
using Mcro::FunctionTraits::TFunction_ArgumentsDecay = typename TFunctionTraits<std::decay_t<T>>::ArgumentsDecay

Shorthand for getting a tuple representing the decayed function arguments.

Definition at line 138 of file FunctionTraits.h.

◆ TFunction_Class

template<CFunction_IsMember T>
using Mcro::FunctionTraits::TFunction_Class = typename TFunctionTraits<std::decay_t<T>>::Class

Shorthand for getting the class of a member function.

Definition at line 169 of file FunctionTraits.h.

◆ TFunction_Return

template<typename T >
using Mcro::FunctionTraits::TFunction_Return = typename TFunctionTraits<std::decay_t<T>>::Return

Shorthand for getting a function return type.

Definition at line 154 of file FunctionTraits.h.

◆ TFunction_ReturnDecay

template<typename T >
using Mcro::FunctionTraits::TFunction_ReturnDecay = typename TFunctionTraits<std::decay_t<T>>::Return

Shorthand for getting a function return type discarding qualifiers.

Definition at line 158 of file FunctionTraits.h.

◆ TFunction_Signature

template<typename T >
using Mcro::FunctionTraits::TFunction_Signature = typename TFunctionTraits<std::decay_t<T>>::Signature

Shorthand for getting a pur function signature.

Definition at line 162 of file FunctionTraits.h.

◆ TFunctionFromTuple

template<typename Return , typename Tuple >
using Mcro::FunctionTraits::TFunctionFromTuple = typename Detail::TFunctionFromTuple_Struct<Return, std::decay_t<Tuple>>::Type

Compose a function type from a tuple of arguments and a return type.

Definition at line 207 of file FunctionTraits.h.

◆ TSetReturn

template<typename Return , typename DstFunction >
using Mcro::FunctionTraits::TSetReturn = TFunctionFromTuple<Return, TFunction_Arguments<DstFunction>>

Override the return type of an input function signature.

Definition at line 211 of file FunctionTraits.h.

◆ TSetReturnDecay

template<typename Return , typename DstFunction >
using Mcro::FunctionTraits::TSetReturnDecay = TFunctionFromTuple<std::decay_t<Return>, TFunction_Arguments<DstFunction>>

Override the return type of an input function signature, and discard its qualifiers.

Definition at line 215 of file FunctionTraits.h.

Function Documentation

◆ InvokeWithTuple() [1/2]

template<typename Function >
TFunction_Return< Function > Mcro::FunctionTraits::InvokeWithTuple ( Function && function,
TFunction_Arguments< Function > const & arguments )

A clone of std::apply for Unreal tuples which also supports function pointers. TL;DR: It calls a function with arguments supplied from a tuple.

Definition at line 255 of file FunctionTraits.h.

◆ InvokeWithTuple() [2/2]

template<CFunctionPtr Function, CHasFunction< Function > Object>
TFunction_Return< Function > Mcro::FunctionTraits::InvokeWithTuple ( Object * object,
Function && function,
TFunction_Arguments< Function > const & arguments )

A clone of std::apply for Unreal tuples which also supports function pointers. This overload can bind an object TL;DR: It calls a function with arguments supplied from a tuple.

Definition at line 269 of file FunctionTraits.h.

Variable Documentation

◆ TFunction_ArgCount

template<typename T >
size_t Mcro::FunctionTraits::TFunction_ArgCount = TFunctionTraits<std::decay_t<T>>::ArgumentCount
inlineconstexpr

Shorthand for getting a function argument count.

Definition at line 150 of file FunctionTraits.h.