LeviLamina
Loading...
Searching...
No Matches
ll::data::AnyFunctionObjBase Class Referenceabstract
Inheritance diagram for ll::data::AnyFunctionObjBase:

Public Member Functions

virtual AnyFunctionObjBasecopy (void *to) const =0
virtual AnyFunctionObjBasemove (void *to) noexcept=0
virtual void tidy () noexcept=0
virtual std::any invoke (std::span< std::any >)=0

Static Public Attributes

static constexpr size_t anyFnSizeNumPtrs = 8
static constexpr size_t smallObjSize = ((anyFnSizeNumPtrs - 1) * sizeof(void*))

Static Protected Member Functions

template<class Arg>
static auto getArg (std::any &any) -> std::conditional_t< std::is_reference_v< Arg >, Arg, std::add_lvalue_reference_t< Arg > >
template<class Obj, class... Args>
static constexpr Obj * constructImpl (void *to, Args &&... args) noexcept(std::is_nothrow_constructible_v< Obj, Args... >)
template<class Obj>
static constexpr void destroyImpl (Obj *self) noexcept

Static Protected Attributes

template<class Obj>
static constexpr bool isLarge

Member Function Documentation

◆ copy()

virtual AnyFunctionObjBase * ll::data::AnyFunctionObjBase::copy ( void * to) const
pure virtual

Implements ll::data::AnyObjBase.

◆ move()

virtual AnyFunctionObjBase * ll::data::AnyFunctionObjBase::move ( void * to)
pure virtualnoexcept

Implements ll::data::AnyObjBase.

◆ tidy()

virtual void ll::data::AnyFunctionObjBase::tidy ( )
pure virtualnoexcept

Implements ll::data::AnyObjBase.

Member Data Documentation

◆ isLarge

template<class Obj>
bool ll::data::AnyObjBase::isLarge
staticconstexprprotectedinherited
Initial value:
= sizeof(Obj) > Obj::smallObjSize || alignof(Obj) > alignof(std::max_align_t)
|| !Obj::nothrowMove

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