равен UB, если адрес массива и адрес его первого элемента совпадают.
ли я положитьT
и завернутыйT
вunion
и проверять их как мне нравится?
union Example {
T value;
struct Wrapped {
T wrapped;
} wrapper;
};
// for simplicity T = int
Example ex;
ex.value = 12;
cout << ex.wrapper.wrapped; // ?
Стандарты C ++ 11 только гарантируют сохранение проверки общей начальной последовательности, ноvalue
не являетсяstruct
, яУгадай ответнет, посколькуОбернутые типы даже не гарантируют совместимость с памятью своего развернутого аналога. а такжедоступ к неактивным членам четко определен только для общих начальных последовательностей.