4#include "AlignedStorage.h"
75template <
typename Definition>
78 using Object =
typename Definition::Object;
85 moveAssign(get(), forward<Object>(other.get()));
93 Object& get() {
return reinterpret_cast<Object&
>(buffer); }
94 const Object& get()
const {
return reinterpret_cast<const Object&
>(buffer); }
97#if SC_PLATFORM_WINDOWS
98 static constexpr int Size = Definition::Windows;
99#elif SC_PLATFORM_APPLE
100 static constexpr int Size = Definition::Apple;
101#elif SC_PLATFORM_LINUX
102 static constexpr int Size = Definition::Linux;
104 static constexpr int Size = Definition::Default;
106 static constexpr int Alignment = Definition::Alignment;
111 static void construct(
Handle& buffer);
112 static void destruct(Object& obj);
113 static void moveConstruct(
Handle& buffer, Object&& obj);
114 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:77