¿Hay alguna garantía para los sindicatos que contienen un tipo envuelto y el tipo en sí?
Puedo poner unT
y un envueltoT
en ununion
e inspeccionarlos como me gusta?
union Example {
T value;
struct Wrapped {
T wrapped;
} wrapper;
};
// for simplicity T = int
Example ex;
ex.value = 12;
cout << ex.wrapper.wrapped; // ?
Los estándares C ++ 11 solo garantizan una inspección segura de la secuencia inicial común, perovalue
no es unstruct
. yoadivinar la respuesta esNo, ya queni siquiera se garantiza que los tipos envueltos sean compatibles con la memoria de su contraparte sin envolver yel acceso a miembros inactivos solo está bien definido en secuencias iniciales comunes.