Более простой вопрос: правильно ли используется литеральная строка?
Даже не потому, что ее время жизни не определено. Вы не можете использовать строковый литерал в соответствующем коде.
Таким образом, комитет, который никогда не занимал время, чтобы четко определить строковые литералы, очевидно, не удосужился указать , который могут объекты типа класса. стать существующим путем размещения новых его подобъектов - очевидно, что полиморфные объекты не могут быть созданы таким образом!
Этот стандарт даже не удосужился описать семантику объединения.
Что касается жизни, то стандарт повсеместен, и это не просто редакционная статья: он отражает глубокое разногласие между серьезными людьми о том, что начинает жизнь, что такое объект, что такое lvalue и т. Д.
Примечательно, что люди имеют всевозможные ложные или противоречивые интуиции:
- бесконечное количество объектов не может быть создано одним вызовом
malloc
- , lvalue ссылается на объект
- перекрывающиеся объекты относятся к объектной модели
- безымянный объект может быть создан только
new
или компиляциейэ-э (временные) ...