Код: Выделить всё
unsigned char* storage = new unsigned char[sizeof(T)];
T* foo = new(storage) T; // line 2
// use *foo somehow
foo->~T(); //destroy our foo
delete[] storage; // Undefined as of C++23? How else to do it?
(6.1) Объект будет иметь или имеет тип класса с нетривиальным деструктором, а указатель используется в качестве операнда удаления-экспрессии, < /p>
< /blockquote>
Это не применяется к Unsigned char < /code> не тип класса. Однако, начиная с C ++ 23, это предложение было изменено на < /p>
Программа имеет неопределенное поведение, если: (6.1). Указатель используется в качестве операнда для удаления-экспрессии, < /p>
< /blockquote>
, который теперь не подписал char < /p>. возможно больше использовать характер в качестве хранилища в качестве хранилища? «представление объекта» и поэтому все еще жива, или
Весь базовый. />
, который произошел, хотя это повторное использование и также снова заканчивалось, вызывая ~ t () или
могло бы даже быть возможным, что это было никогда не должно работать с Arrapes, созданным> новым -Экспресс. Не позволяйте нам в любом случае указать требуемое выравнивание?>
Подробнее здесь: https://stackoverflow.com/questions/770 ... e-provider