Wenn ein Programm versucht, über einen glvalue, dessen Typ nicht ähnlich ist, auf den gespeicherten Wert eines Objekts zuzugreifen ([defns.access]). ([conv.qual]) zu einem der folgenden Typen ist das Verhalten undefiniert:
(11.1) der dynamische Typ des Objekts,
(11.2) ein Typ, der der vorzeichenbehaftete oder vorzeichenlose Typ ist, der dem dynamischen Typ des Objekts entspricht, oder
(11.3) ein char-, unsigned char- oder std::byte-Typ.
Aber laut https://www.open-std.org/jtc1/sc22/wg21 ... 839r7.html ist das folgende Snippet UB:
Code: Select all
T obj; // T is some arbitrary type
std::byte *ptr = reinterpret_cast(&obj);
for (std::size_t i = 0;i
Mobile version