Namensräume
Varianten
Aktionen

voidify

Von cppreference.com
< cpp‎ | memory
 
 
Speicherverwaltungsbibliothek
voidify
(nur Exposition*)
Algorithmen für uninitialisierten Speicher
(C++17)
(C++17)
(C++17)
Beschränkte uninitialisierte
Speicher-Algorithmen
C-Bibliothek

Allocatoren
Speicherressourcen
Unterstützung für Garbage Collection
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
Uninitialisierter Speicher
Explizites Lebenszeitmanagement
 
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) [edit]
kopiert einen Bereich von Objekten in einen uninitialisierten Speicherbereich
(Algorithmus-Funktionsobjekt)[edit]
kopiert ein Objekt in einen uninitialisierten Speicherbereich, definiert durch einen Bereich
(Funktions-Template) [edit]
kopiert ein Objekt in einen uninitialisierten Speicherbereich, definiert durch einen Bereich
(Algorithmus-Funktionsobjekt)[edit]
verschiebt einen Bereich von Objekten in einen uninitialisierten Speicherbereich
(Funktions-Template) [edit]
verschiebt einen Bereich von Objekten in einen uninitialisierten Speicherbereich
(Algorithmus-Funktionsobjekt)[edit]
konstruiert Objekte mittels Standardinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Bereich
(Funktions-Template) [edit]
konstruiert Objekte mittels Standardinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Bereich
(Algorithmus-Funktionsobjekt)[edit]
konstruiert Objekte mittels Wertinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Bereich
(Funktions-Template) [edit]
konstruiert Objekte mittels Wertinitialisierung in einem uninitialisierten Speicherbereich, definiert durch einen Bereich
(Algorithmus-Funktionsobjekt)[edit]
erstellt ein Objekt an einer gegebenen Adresse
(Funktions-Template) [edit]
erstellt ein Objekt an einer gegebenen Adresse
(Algorithmus-Funktionsobjekt)[edit]