Namespaces
Variants

std:: polymorphic

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 polymorphic ;
(1) (seit C++26)
namespace pmr {

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

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

Ein std::polymorphic -Objekt verwaltet die Lebensdauer eines besessenen Objekts. Das besessene Objekt ist vom Typ T oder einem beliebigen (öffentlich und eindeutig) von T abgeleiteten Typ. Ein std::polymorphic -Objekt kann nur dann kein besessenes Objekt haben, nachdem es verschoben wurde, in diesem Fall ist es wertlos .

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

Wenn ein Programm eine explizite oder partielle Spezialisierung von std::polymorphic 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 eines 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

Member Beschreibung
Allocator alloc der zugehörige Allokator
( Nur-Darstellungs-Memberobjekt* )

Memberfunktionen

konstruiert das polymorphic 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 polymorphic Objekt wertlos ist
(öffentliche Elementfunktion)
gibt den zugeordneten Allokator zurück
(öffentliche Elementfunktion)
Modifikatoren
tauscht die Inhalte aus
(öffentliche Elementfunktion)

Nicht-Member-Funktionen

spezialisiert den std::swap Algorithmus
(Funktionsschablone)

Hinweise

Feature-Test Makro Wert Std Feature
__cpp_lib_polymorphic 202502L (C++26) std::polymorphic

Beispiel

Siehe auch

(C++26)
ein Wrapper, der ein dynamisch allokiertes Objekt mit wertähnlicher Semantik enthält
(Klassentemplate)