|
|
Defined in header <memory> | ||
template<class T,class Allocator=std::allocator<T>> class polymorphic; | (1) | (since C++26) |
namespace pmr{ template<class T> | (2) | (since C++26) |
std::polymorphic
is a wrapper containing dynamically-allocated object of possibly different types with value-like semantics.Anstd::polymorphic
object manages thelifetime of an owned object. The owned object is of typeT
or any type (publicly and unambiguously) derived fromT
. Anstd::polymorphic
object can only have no owned object after it has been moved from, in this case it isvalueless .
Every object of typestd::polymorphic<T, Allocator>
uses an object of typeAllocator
to allocate and free storage for the owned object as needed.
If a program declares an explicit or partial specialization ofstd::polymorphic
, the behavior is undefined.
Contents |
T | - | the type of the owned object |
Allocator | - | the type of the associated allocator |
Type requirements | ||
-T may be anincomplete type. | ||
-IfT is one of the following types, the program is ill-formed:
| ||
-IfAllocator does not satisfy the requirements ofAllocator, the program is ill-formed. | ||
-Ifstd::allocator_traits<Allocator>::value_type is not the same type asT , the program is ill-formed. |
Type | Definition |
value_type | T |
allocator_type | Allocator |
pointer | typenamestd::allocator_traits<Allocator>::pointer |
const_pointer | typenamestd::allocator_traits<Allocator>::const_pointer |
Member | Description |
Allocator alloc | the asociated allocator (exposition-only member object*) |
constructs thepolymorphic object(public member function)[edit] | |
destroys the owned value, if there is one (public member function)[edit] | |
assigns contents (public member function)[edit] | |
Observers | |
accesses the owned value (public member function)[edit] | |
checks if thepolymorphic is valueless(public member function)[edit] | |
returns the associated allocator (public member function)[edit] | |
Modifiers | |
exchanges the contents (public member function)[edit] |
(C++26) | specializes thestd::swap algorithm (function template)[edit] |
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_polymorphic | 202502L | (C++26) | std::polymorphic |
This section is incomplete Reason: no example |
(C++26) | a wrapper containing dynamically-allocated object with value-like semantics (class template)[edit] |