Existem garantias para uniões que contêm um tipo de quebra automática e o próprio tipo?
Posso colocar umT
e um embrulhadoT
em umunion
e inspecioná-los como eu gosto?
union Example {
T value;
struct Wrapped {
T wrapped;
} wrapper;
};
// for simplicity T = int
Example ex;
ex.value = 12;
cout << ex.wrapper.wrapped; // ?
Os padrões C ++ 11 garantem apenas uma inspeção salva da sequência inicial comum, masvalue
não é umstruct
. Euacho a resposta énão, Desde atipos embrulhados nem são garantidos como compatíveis com a memória de seus pares não embrulhados eacessar membros inativos é bem definido apenas em seqüências iniciais comuns.