В коде С++ 03, как я портативно реализовать буфер unsigned char[sizeof(T)]
, который имеет тот же размер и выравнивание, что и у данного типа T
?
Например:
template<class T>
void test()
{
unsigned char buffer[sizeof(T)]; // <----- how do I ensure this is aligned?
if (some_condition())
{
T *const obj = new(buffer) T();
// ...
obj->~T();
}
else { /* use 'buffer' for something else */ }
}
Возможно ли это, или вы вынуждены использовать расширения компилятора, чтобы реализовать это?