30 #ifndef MPD_VAR_SIZE_HXX
31 #define MPD_VAR_SIZE_HXX
36 #include <type_traits>
52 template<
class T,
typename... Args>
55 NewVarSize(
size_t declared_tail_size,
size_t real_tail_size, Args&&... args)
57 static_assert(std::is_standard_layout<T>::value,
58 "Not standard-layout");
61 size_t size =
sizeof(T) - declared_tail_size + real_tail_size;
67 new(
instance) T(std::forward<Args>(args)...);
gcc_malloc void * xalloc(size_t size)
Allocate memory.
gcc_nonnull_all void DeleteVarSize(T *instance)
gcc_malloc T * NewVarSize(size_t declared_tail_size, size_t real_tail_size, Args &&...args)
Allocate and construct a variable-size object.