4#include "AlignedStorage.h"
74template <
typename Definition>
77 using Object =
typename Definition::Object;
84 moveAssign(get(), forward<Object>(other.get()));
92 Object& get() {
return reinterpret_cast<Object&
>(buffer); }
93 const Object& get()
const {
return reinterpret_cast<const Object&
>(buffer); }
96#if SC_PLATFORM_WINDOWS
97 static constexpr int Size = Definition::Windows;
98#elif SC_PLATFORM_APPLE
99 static constexpr int Size = Definition::Apple;
101 static constexpr int Size = Definition::Default;
103 static constexpr int Alignment = Definition::Alignment;
108 static void construct(
Handle& buffer);
109 static void destruct(Object& obj);
110 static void moveConstruct(
Handle& buffer, Object&& obj);
111 static void moveAssign(Object& selfPointer, Object&& obj);
A buffer of bytes with given alignment.
Definition: AlignedStorage.h:25
Hides implementation details from public headers (static PIMPL).
Definition: OpaqueObject.h:76