Iros
 
Loading...
Searching...
No Matches
di::any::InlineStorage< inline_size, inline_align > Struct Template Reference

#include <di/any/storage/inline_storage.h>

Public Types

using Manage = meta::Type<detail::InlineStorageManage<InlineStorage>>
 
using Interface = meta::List<Manage>
 
template<typename>
using CreationResult = void
 

Public Member Functions

constexpr InlineStorage ()=default
 
 InlineStorage (InlineStorage const &)=delete
 
auto operator= (InlineStorage const &) -> InlineStorage &=delete
 
 ~InlineStorage ()=default
 
template<typename T>
auto down_cast () -> T *
 
template<typename T>
auto down_cast () const -> T const *
 

Static Public Member Functions

static constexpr auto storage_category () -> StorageCategory
 
template<typename T>
static constexpr auto creation_is_fallible (InPlaceType< T >) -> bool
 
template<typename T, typename... Args>
requires (sizeof(T) <= inline_size && alignof(T) <= inline_align && concepts::MoveConstructible<T> && concepts::ConstructibleFrom<T, Args...>)
static constexpr void init (InlineStorage *self, InPlaceType< T >, Args &&... args)
 
static constexpr void move_construct (concepts::VTableFor< Interface > auto &vtable, InlineStorage *dest, InlineStorage *source)
 
template<concepts::VTableFor< Interface > VTable>
static constexpr void move_assign (VTable &dest_vtable, InlineStorage *dest, VTable &source_vtable, InlineStorage *source)
 
static constexpr void destroy (concepts::VTableFor< Interface > auto &vtable, InlineStorage *self)
 

Member Typedef Documentation

◆ CreationResult

template<size_t inline_size, size_t inline_align>
template<typename>
using di::any::InlineStorage< inline_size, inline_align >::CreationResult = void

◆ Interface

template<size_t inline_size, size_t inline_align>
using di::any::InlineStorage< inline_size, inline_align >::Interface = meta::List<Manage>

◆ Manage

template<size_t inline_size, size_t inline_align>
using di::any::InlineStorage< inline_size, inline_align >::Manage = meta::Type<detail::InlineStorageManage<InlineStorage>>

Constructor & Destructor Documentation

◆ InlineStorage() [1/2]

template<size_t inline_size, size_t inline_align>
di::any::InlineStorage< inline_size, inline_align >::InlineStorage ( )
constexprdefault

◆ InlineStorage() [2/2]

template<size_t inline_size, size_t inline_align>
di::any::InlineStorage< inline_size, inline_align >::InlineStorage ( InlineStorage< inline_size, inline_align > const & )
delete

◆ ~InlineStorage()

template<size_t inline_size, size_t inline_align>
di::any::InlineStorage< inline_size, inline_align >::~InlineStorage ( )
default

Member Function Documentation

◆ creation_is_fallible()

template<size_t inline_size, size_t inline_align>
template<typename T>
static constexpr auto di::any::InlineStorage< inline_size, inline_align >::creation_is_fallible ( InPlaceType< T > ) -> bool
inlinestaticconstexpr

◆ destroy()

template<size_t inline_size, size_t inline_align>
static constexpr void di::any::InlineStorage< inline_size, inline_align >::destroy ( concepts::VTableFor< Interface > auto & vtable,
InlineStorage< inline_size, inline_align > * self )
inlinestaticconstexpr

◆ down_cast() [1/2]

template<size_t inline_size, size_t inline_align>
template<typename T>
auto di::any::InlineStorage< inline_size, inline_align >::down_cast ( ) -> T*
inline

◆ down_cast() [2/2]

template<size_t inline_size, size_t inline_align>
template<typename T>
auto di::any::InlineStorage< inline_size, inline_align >::down_cast ( ) const -> T const*
inline

◆ init()

template<size_t inline_size, size_t inline_align>
template<typename T, typename... Args>
requires (sizeof(T) <= inline_size && alignof(T) <= inline_align && concepts::MoveConstructible<T> && concepts::ConstructibleFrom<T, Args...>)
static constexpr void di::any::InlineStorage< inline_size, inline_align >::init ( InlineStorage< inline_size, inline_align > * self,
InPlaceType< T > ,
Args &&... args )
inlinestaticconstexpr

◆ move_assign()

template<size_t inline_size, size_t inline_align>
template<concepts::VTableFor< Interface > VTable>
static constexpr void di::any::InlineStorage< inline_size, inline_align >::move_assign ( VTable & dest_vtable,
InlineStorage< inline_size, inline_align > * dest,
VTable & source_vtable,
InlineStorage< inline_size, inline_align > * source )
inlinestaticconstexpr

◆ move_construct()

template<size_t inline_size, size_t inline_align>
static constexpr void di::any::InlineStorage< inline_size, inline_align >::move_construct ( concepts::VTableFor< Interface > auto & vtable,
InlineStorage< inline_size, inline_align > * dest,
InlineStorage< inline_size, inline_align > * source )
inlinestaticconstexpr

◆ operator=()

template<size_t inline_size, size_t inline_align>
auto di::any::InlineStorage< inline_size, inline_align >::operator= ( InlineStorage< inline_size, inline_align > const & ) -> InlineStorage &=delete
delete

◆ storage_category()

template<size_t inline_size, size_t inline_align>
static constexpr auto di::any::InlineStorage< inline_size, inline_align >::storage_category ( ) -> StorageCategory
inlinestaticconstexpr

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