Powiel możliwe:
Aliasing `T*` with `char*` is allowed. Is it also allowed the other way around?Czy jest to niezdefiniowane zachowanie std :: array?
Używam std::array
z char
s trzymać wartość nieznanego prymitywnego typu, który jest długo nie więcej niż 10 bajtów, tak jak poniżej:
std::array<char, 10> val;
*reinterpret_cast<double*>(val.data()) = 6.3;
//blah blah blah...
double stuff = *reinterpret_cast<double*>(val.data());
Czytałem, że odlew iz powrotem przez char *
nie jest u ndefined, ponieważ kompilator zakłada, że char *
może aliasować wartość dowolnego typu. Czy to nadal działa, gdy wartość jest umieszczona w (jak zakładam jest) tablica z char
s wewnątrz obiektu?
Uwaga: zdaję sobie sprawę, że mógłbym używać tutaj związku, ale w wyniku tego powstałyby duże ilości kodu dla tego, co robię, i chciałbym go w razie potrzeby uniknąć, stąd pytanie.
Różne pytanie, ta sama odpowiedź. – Dan
To samo pytanie, różne słowa. ; -] – ildjarn