Storage for an object that is moved and retrieved either by copy or by rvalue reference. More...
Public Member Functions | |
| moved_object_storage (T &&t, void *const base, std::size_t &size) noexcept | |
Constructs a new object by packing t in it. More... | |
| template<typename Tuple > | |
| moved_object_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... | |
Private Member Functions | |
| bool | construct (T &&t, void *const base, std::size_t &size) |
Initializes this object by moving t in it. More... | |
| bool | construct (T const &t, void *const base, std::size_t &size) |
Initializes this object by copying t in it. More... | |
| void | destroy (void) noexcept |
| Destroys the internal storage as if it holds a moved or copied object. | |
| void | destroy_packed (void) noexcept |
| Destroys the internal storage as if it holds a packed object. | |
| T & | get (void) noexcept |
| Returns the moved or copied object. | |
| T | moveout (void) |
| Moves the object out if it was moved or copied in. | |
Static Private Member Functions | |
| static std::size_t | packed_size (T const &t) noexcept |
Returns the packed size of t. | |
Storage for an object that is moved and retrieved either by copy or 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::moved_object_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::moved_object_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. |
1.8.13