Eventuali duplicati:
Aliasing `T*` with `char*` is allowed. Is it also allowed the other way around?È questo l'uso del comportamento non definito di std :: array?
sto usando un std::array
di char
s per contenere un valore di tipo sconosciuto primitiva, che è lunga non più di 10 byte, in questo modo:
std::array<char, 10> val;
*reinterpret_cast<double*>(val.data()) = 6.3;
//blah blah blah...
double stuff = *reinterpret_cast<double*>(val.data());
ho letto che la fusione avanti e indietro attraverso char *
non è u ndefinito, poiché il compilatore presuppone che uno char *
possa alias un valore di qualsiasi tipo. Funziona ancora quando viene inserito il valore (cosa presumo che sia) un array di char
s all'interno dell'oggetto?
Nota: sono consapevole che potrei utilizzare un sindacato qui, ma ciò comporterebbe una grande quantità di codice boilerplate per quello che sto facendo, e vorrei evitarlo se necessario, da qui la domanda.
Domanda diversa, stessa risposta. – Dan
Stessa domanda, parole diverse. ; -] – ildjarn