voidify
template< class T > void* voidify( T& obj ) noexcept; |
(nur Exposition*) (constexpr seit C++17) |
|
Gibt die Adresse von obj zurück (implizit konvertiert zu void*).
Inhalt |
[bearbeiten] Parameter
| obj | - | das Objekt, dessen Adresse genommen wird |
[bearbeiten] Rückgabewert
|
&obj |
(bis C++11) |
|
std::addressof(obj) |
(seit C++11) |
[bearbeiten] Anmerkungen
Diese expositions-nur-Funktion wird durch P0896R4 eingeführt. Sie wird verwendet, um die Auswirkungen von Algorithmen für nicht initialisierten Speicher zu beschreiben, die Objekte in nicht initialisierten Speicherbereichen konstruieren. Der Ergebniszeiger wird als placement-params eines Placement-`new`-Ausdrucks verwendet.
Ursprünglich war der Rückgabewert const_cast<void*>(static_cast<const volatile void*>(std::addressof(obj))), was die Const-Korrektheit brach. Die expliziten Casts wurden durch die Auflösung von LWG-Problem 3870 entfernt, und die einzig verbleibende Konvertierung ist die implizite Konvertierung zu void*.
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 3870 | C++98 | die expliziten Casts brachen die Const-Korrektheit | diese Casts entfernt |
[bearbeiten] Siehe auch
| kopiert einen Bereich von Objekten in einen uninitialisierten Speicherbereich (Funktions-Template) | |
| (C++20) |
kopiert einen Bereich von Objekten in einen uninitialisierten Speicherbereich (Algorithmus-Funktionsobjekt) |
| kopiert ein Objekt in einen uninitialisierten Speicherbereich, definiert durch einen Bereich (Funktions-Template) | |
| (C++20) |
kopiert ein Objekt in einen uninitialisierten Speicherbereich, definiert durch einen Bereich (Algorithmus-Funktionsobjekt) |
| (C++17) |
verschiebt einen Bereich von Objekten in einen uninitialisierten Speicherbereich (Funktions-Template) |
| (C++20) |
verschiebt einen Bereich von Objekten in einen uninitialisierten Speicherbereich (Algorithmus-Funktionsobjekt) |
| konstruiert Objekte mittels Standardinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Bereich (Funktions-Template) | |
| konstruiert Objekte mittels Standardinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Bereich (Algorithmus-Funktionsobjekt) | |
| konstruiert Objekte mittels Wertinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Bereich (Funktions-Template) | |
| konstruiert Objekte mittels Wertinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Bereich (Algorithmus-Funktionsobjekt) | |
| (C++20) |
erstellt ein Objekt an einer gegebenen Adresse (Funktions-Template) |
| (C++20) |
erstellt ein Objekt an einer gegebenen Adresse (Algorithmus-Funktionsobjekt) |