reinterpret_cast создание тривиально конструируемого объекта по умолчанию

cppreference† говорится, что:

Объекты с тривиальными конструкторами по умолчанию могут быть созданы с помощьюreinterpret_cast в любом надлежащим образом выровненном хранилище, например в памяти, выделенной сstd::malloc.

Это подразумевает, что следующее является четко определенным кодом:

struct X { int x; };
alignas(X) char buffer[sizeof(X)];    // (A)
reinterpret_cast<X*>(buffer)->x = 42; // (B)

Далее следуют три вопроса:

Это правильная цитата?Если да, то в какой моментX начать? Если на линии(B)Это сам актерский состав, который считается приобретением хранилища? Если на линии(A)что, если бы была ветвь между(A) а также(B) что бы условно построитьX или какой-то другой стручок,Y?Что-нибудь меняется в этом отношении между C ++ 11 и C ++ 1z?

†Обратите внимание, что это старая ссылка. Формулировка была изменена в ответ на этот вопрос. Теперь оно гласит:

Однако, в отличие от C, объекты с тривиальными конструкторами по умолчанию не могут быть созданы путем простой интерпретации надлежащим образом выровненного хранилища, такого как память, выделеннаяstd::malloc: location-new требуется, чтобы формально представить новый объект и избежать потенциально неопределенного поведения.

Ответы на вопрос(1)

Ваш ответ на вопрос