Предположим, что у меня есть шаблон шаблона типа T.
И пусть у меня есть std::aligned_storage
следующим образом:
typename std::aligned_storage<sizeof(T), alignof(T)>::type storage;
Я хочу разместить новую a T в storage
.
Что соответствует стандартизованному значению/типу указателя для перехода к новому оператору размещения, и как мне получить это из storage
?
new (& ???) T(a,b,c);
Например:
new (&storage) T(a,b,c);
new (static_cast<void*>(&storage)) T(a,b,c);
new (reinterpret_cast<T*>(&storage)) T(a,b,c);
new (static_cast<T*>(static_cast<void*>(&storage));
Какое из вышеперечисленных (если есть) совместимо, а если нет, то какой способ лучше?