C++ (und C) strikte Aliasing-Regeln enthalten, dass ein char*
und unsigned char*
alias jeden anderen Zeiger Alias können.Hat ein std :: byte-Zeiger die gleichen Aliasing-Implikationen wie char *?
AFAIK gibt es keine analoge Regel für uint8_t*
. Also meine Frage: Was sind die Aliasing-Regeln für einen std::byte
Zeiger?
Die C++ Referenz derzeit nur specifies:
Wie die Zeichentypen (char, unsigned char, signed char) es verwendet werden kann durch andere Objekte (Objektdarstellung) besetzt roh Speicher zuzugreifen, aber im Gegensatz zu denen, Typen, es ist kein Zeichentyp und kein arithmetischer Typ.
http://en.cppreference.com/w/cpp/language/reinterpret_cast#Type_aliasing Die gleichen Regeln gelten für Aliasing 'std :: byte' zu' char' – Justin
@Justin: Vielleicht möchten um ein wenig klarer zu sein, denn "die Regeln gelten" sagt nicht, welche Regeln gelten. 'std :: byte' hat dieselben Regeln wie' char' und 'unsigned char'. – ShadowRanger
@Justin: Nicht bei der ersten Veröffentlichung (Sie hatten: "en.cppreference.com/w/cpp/language/... Die Aliasregeln gelten für' std :: byte' "). Du hast seitdem bearbeitet; Ich habe es vor der Bearbeitung geladen. Danke für die Reparatur. – ShadowRanger