Можно ли положить 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; // ?
Стандарты С++ 11 гарантируют сохранение только обычной исходной последовательности, но value
не является struct
. Я полагаю, что ответ нет, так как завернутые типы даже не гарантированно совместимы с их развёрнутой копией и доступ к неактивным членам только хорошо определен в общих начальных последовательностях.