template<typename T, bool AutoDestruct = false>
sead::StorageFor class

Provides suitably aligned uninitialized storage for a type T. Use this as a std::aligned_storage replacement that is easier to use and less error prone for common cases (std::aligned_storage_t<sizeof(T), alignof(T)>).

Constructors, destructors, conversion operators

StorageFor() defaulted constexpr
StorageFor(InitializeTag) explicit
template<typename... Args>
StorageFor(InitializeTag, Args && ... args) explicit
StorageFor(ZeroInitializeTag) explicit
template<typename... Args>
StorageFor(ZeroInitializeTag, Args && ... args) explicit
~StorageFor()

Public functions

auto constructDefault() -> T*
template<typename... Args>
auto construct(Args && ... args) -> T*
void destruct()
auto ref() -> T&
auto ref() const -> const T&
auto data() -> T*
auto data() const -> const T*
auto operator->() -> T*
auto operator->() const -> const T*
auto operator*() -> T&
auto operator*() const -> const T&
auto storage() -> void*
auto storage() const -> const void*

Function documentation

template<typename T, bool AutoDestruct>
void sead::StorageFor<T, AutoDestruct>::destruct()

template<typename T, bool AutoDestruct>
T& sead::StorageFor<T, AutoDestruct>::ref()

template<typename T, bool AutoDestruct>
const T& sead::StorageFor<T, AutoDestruct>::ref() const

template<typename T, bool AutoDestruct>
T* sead::StorageFor<T, AutoDestruct>::data()

template<typename T, bool AutoDestruct>
const T* sead::StorageFor<T, AutoDestruct>::data() const

template<typename T, bool AutoDestruct>
T* sead::StorageFor<T, AutoDestruct>::operator->()

template<typename T, bool AutoDestruct>
const T* sead::StorageFor<T, AutoDestruct>::operator->() const

template<typename T, bool AutoDestruct>
T& sead::StorageFor<T, AutoDestruct>::operator*()

template<typename T, bool AutoDestruct>
const T& sead::StorageFor<T, AutoDestruct>::operator*() const