Storage for an object that is retrieved by rvalue reference. More...
Public Member Functions | |
rval_storage (T &&t, void *const base, std::size_t &size) noexcept | |
Constructs a new object by packing t in it. More... | |
template<typename Tuple > | |
rval_storage (Tuple &&t) noexcept | |
Packs the object contained in tuple t . More... | |
T | get (void *const base) |
Returns the stored object after unpacking it. More... | |
T | get (void *const base, std::size_t &size) |
Returns the stored object after unpacking it. More... | |
Static Public Member Functions | |
static std::size_t | packed_size (T &&t) noexcept |
Returns the packed size of t . More... | |
Static Private Member Functions | |
static std::size_t | packed_size (T const &t) noexcept |
Returns the packed size of t . | |
Private Attributes | |
std::aligned_storage< sizeof(value_type), std::alignment_of< value_type >::value >::type | m_storage |
Stored object. | |
aligned_storage_t< sizeof(value_type)> | m_force_alignment |
Storage for an object that is retrieved by rvalue reference.
T | Object type. |
|
noexcept |
Constructs a new object by packing t
in it.
This constructor will copy the dynamic part of the object at base + size
, which should be big enough to fit it.
t | Object to pack. |
base | Pointer to buffer start where the dynamic part of t can be stored in. |
size | Offset from base where space is available. |
|
noexcept |
Packs the object contained in tuple t
.
t | Tuple with the object to pack, the start of the buffer for the dynamic part of the object and the offset from the start of the buffer. |
|
staticnoexcept |
Returns the packed size of t
.
T stapl::runtime::rval_storage< T >::get | ( | void *const | base | ) |
Returns the stored object after unpacking it.
base | Buffer where the dynamic part of the object is stored. |
T stapl::runtime::rval_storage< T >::get | ( | void *const | base, |
std::size_t & | size | ||
) |
Returns the stored object after unpacking it.
base | Buffer where the dynamic part of the object is stored. |
size | Variable to store how many bytes were unpacked. |