Namespaces
Variants

std:: indirect

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
Definiert im Header <memory>
template < class T, class Allocator = std:: allocator < T > >
class indirect ;
(1) (seit C++26)
namespace pmr {

template < class T >
using indirect = std :: indirect < T, std:: pmr :: polymorphic_allocator < T >> ;

}
(2) (seit C++26)
1) std::indirect ist ein Wrapper, der ein dynamisch allokiertes Objekt mit wertähnlicher Semantik enthält.
2) std::pmr::indirect ist eine Alias-Vorlage, die einen polymorphic allocator verwendet.

Ein std::indirect -Objekt verwaltet die Lebensdauer eines besessenen Objekts. Ein std::indirect -Objekt kann nur dann kein besessenes Objekt haben, nachdem es verschoben wurde; in diesem Fall ist es wertlos .

Jedes Objekt vom Typ std::indirect<T, Allocator> verwendet ein Objekt vom Typ Allocator , um bei Bedarf Speicher für das besessene Objekt zu allozieren und freizugeben.

Wenn ein Programm eine explizite oder partielle Spezialisierung von std::indirect deklariert, ist das Verhalten undefiniert.

Inhaltsverzeichnis

Template-Parameter

T - der Typ des besessenen Objekts
Allocator - der Typ des zugeordneten Allokators
Typanforderungen
-
T kann ein unvollständiger Typ sein.
-
Wenn T einer der folgenden Typen ist, ist das Programm fehlerhaft:
-
Wenn Allocator nicht die Anforderungen von Allocator erfüllt, ist das Programm fehlerhaft.
-
Wenn std:: allocator_traits < Allocator > :: value_type nicht derselbe Typ wie T ist, ist das Programm fehlerhaft.

Verschachtelte Typen

Typ Definition
value_type T
allocator_type Allocator
pointer typename std:: allocator_traits < Allocator > :: pointer
const_pointer typename std:: allocator_traits < Allocator > :: const_pointer

Datenmitglieder

Mitglied Beschreibung
pointer p ein Zeiger auf den verwalteten Wert
( Nur zur Veranschaulichung verwendetes Mitgliedsobjekt* )
Allocator alloc der zugehörige Allokator
( Nur zur Veranschaulichung verwendetes Mitgliedsobjekt* )

Memberfunktionen

konstruiert das indirect Objekt
(öffentliche Elementfunktion)
zerstört den enthaltenen Wert, falls vorhanden
(öffentliche Elementfunktion)
weist Inhalte zu
(öffentliche Elementfunktion)
Beobachter
greift auf den enthaltenen Wert zu
(öffentliche Elementfunktion)
prüft ob das indirect wertlos ist
(öffentliche Elementfunktion)
gibt den zugeordneten Allokator zurück
(öffentliche Elementfunktion)
Modifikatoren
tauscht die Inhalte aus
(öffentliche Elementfunktion)

Nicht-Member-Funktionen

(C++26) (C++26)
vergleicht indirect Objekte
(Funktions-Template)
spezialisiert den std::swap Algorithmus
(Funktions-Template)

Hilfsklassen

Hash-Unterstützung für std::indirect
(Klassen-Template-Spezialisierung)

Deduktionsleitfäden

Hinweise

Feature-Test Makro Wert Std Feature
__cpp_lib_indirect 202502L (C++26) std::indirect

Beispiel

Siehe auch

ein polymorpher Wrapper, der ein dynamisch allokiertes Objekt mit wertähnlicher Semantik enthält
(Klassentemplate)
(C++11)
intelligenter Zeiger mit eindeutiger Objektbesitz-Semantik
(Klassentemplate)