CppCommon  1.0.4.1
C++ Common Library
Public Member Functions | Friends | List of all members
CppCommon::Function< R(Args...), Capacity > Class Template Reference

Allocation free function. More...

#include <function.h>

Public Member Functions

 Function () noexcept
 
 Function (std::nullptr_t) noexcept
 
 Function (const Function &function) noexcept
 
 Function (Function &&function) noexcept
 
template<class TFunction >
 Function (TFunction &&function) noexcept
 
 ~Function () noexcept
 
Functionoperator= (std::nullptr_t) noexcept
 
Functionoperator= (const Function &function) noexcept
 
Functionoperator= (Function &&function) noexcept
 
template<typename TFunction >
Functionoperator= (TFunction &&function) noexcept
 
template<typename TFunction >
Functionoperator= (std::reference_wrapper< TFunction > function) noexcept
 
 operator bool () const noexcept
 Check if the function is valid. More...
 
operator() (Args... args)
 Invoke the function. More...
 
void swap (Function &function) noexcept
 Swap two instances. More...
 
template<typename TFunction >
Function< R(Args...), Capacity > & operator= (TFunction &&function) noexcept
 
template<typename TFunction >
Function< R(Args...), Capacity > & operator= (std::reference_wrapper< TFunction > function) noexcept
 

Friends

template<class UR , class... UArgs, size_t UCapacity>
void swap (Function< UR(UArgs...), UCapacity > &function1, Function< UR(UArgs...), UCapacity > &function2) noexcept
 

Detailed Description

template<class R, class... Args, size_t Capacity>
class CppCommon::Function< R(Args...), Capacity >

Allocation free function.

Allocation free function uses internal stack-based buffer to keep the closure. This allows to avoid slow heap allocation in function constructor as it performed in std::function implementation.

Invocation overhead is similar to std::function implementation.

Definition at line 30 of file function.h.

Constructor & Destructor Documentation

◆ Function() [1/5]

template<class R , class... Args, size_t Capacity>
CppCommon::Function< R(Args...), Capacity >::Function
inlinenoexcept

Definition at line 12 of file function.inl.

◆ Function() [2/5]

template<class R , class... Args, size_t Capacity>
CppCommon::Function< R(Args...), Capacity >::Function ( std::nullptr_t  )
inlinenoexcept

Definition at line 20 of file function.inl.

◆ Function() [3/5]

template<class R , class... Args, size_t Capacity>
CppCommon::Function< R(Args...), Capacity >::Function ( const Function< R(Args...), Capacity > &  function)
inlinenoexcept

Definition at line 26 of file function.inl.

◆ Function() [4/5]

template<class R , class... Args, size_t Capacity>
CppCommon::Function< R(Args...), Capacity >::Function ( Function< R(Args...), Capacity > &&  function)
inlinenoexcept

Definition at line 38 of file function.inl.

◆ Function() [5/5]

template<class R , class... Args, size_t Capacity>
template<class TFunction >
CppCommon::Function< R(Args...), Capacity >::Function ( TFunction< R(Args...), Capacity > &&  function)
inlinenoexcept

Definition at line 46 of file function.inl.

◆ ~Function()

template<class R , class... Args, size_t Capacity>
CppCommon::Function< R(Args...), Capacity >::~Function
inlinenoexcept

Definition at line 63 of file function.inl.

Member Function Documentation

◆ operator bool()

template<class R , class... Args, size_t Capacity>
CppCommon::Function< R(Args...), Capacity >::operator bool ( ) const
inlineexplicitnoexcept

Check if the function is valid.

Definition at line 50 of file function.h.

◆ operator()()

template<class R , class... Args, size_t Capacity>
R CppCommon::Function< R(Args...), Capacity >::operator() ( Args...  args)
inline

Invoke the function.

Definition at line 112 of file function.inl.

◆ operator=() [1/7]

template<class R , class... Args, size_t Capacity>
Function< R(Args...), Capacity > & CppCommon::Function< R(Args...), Capacity >::operator= ( const Function< R(Args...), Capacity > &  function)
inlinenoexcept

Definition at line 82 of file function.inl.

◆ operator=() [2/7]

template<class R , class... Args, size_t Capacity>
Function< R(Args...), Capacity > & CppCommon::Function< R(Args...), Capacity >::operator= ( Function< R(Args...), Capacity > &&  function)
inlinenoexcept

Definition at line 89 of file function.inl.

◆ operator=() [3/7]

template<class R , class... Args, size_t Capacity>
Function< R(Args...), Capacity > & CppCommon::Function< R(Args...), Capacity >::operator= ( std::nullptr_t  )
inlinenoexcept

Definition at line 70 of file function.inl.

◆ operator=() [4/7]

template<class R , class... Args, size_t Capacity>
template<typename TFunction >
Function& CppCommon::Function< R(Args...), Capacity >::operator= ( std::reference_wrapper< TFunction< R(Args...), Capacity > >  function)
noexcept

◆ operator=() [5/7]

template<class R , class... Args, size_t Capacity>
template<typename TFunction >
Function<R(Args...), Capacity>& CppCommon::Function< R(Args...), Capacity >::operator= ( std::reference_wrapper< TFunction< R(Args...), Capacity > >  function)
inlinenoexcept

Definition at line 105 of file function.inl.

◆ operator=() [6/7]

template<class R , class... Args, size_t Capacity>
template<typename TFunction >
Function& CppCommon::Function< R(Args...), Capacity >::operator= ( TFunction< R(Args...), Capacity > &&  function)
noexcept

◆ operator=() [7/7]

template<class R , class... Args, size_t Capacity>
template<typename TFunction >
Function<R(Args...), Capacity>& CppCommon::Function< R(Args...), Capacity >::operator= ( TFunction< R(Args...), Capacity > &&  function)
inlinenoexcept

Definition at line 97 of file function.inl.

◆ swap()

template<class R , class... Args, size_t Capacity>
void CppCommon::Function< R(Args...), Capacity >::swap ( Function< R(Args...), Capacity > &  function)
inlinenoexcept

Swap two instances.

Definition at line 144 of file function.inl.

Friends And Related Function Documentation

◆ swap

template<class R , class... Args, size_t Capacity>
template<class UR , class... UArgs, size_t UCapacity>
void swap ( Function< UR(UArgs...), UCapacity > &  function1,
Function< UR(UArgs...), UCapacity > &  function2 
)
friend

The documentation for this class was generated from the following files: