std:: polymorphic
|
Определено в заголовочном файле
<memory>
|
||
|
template
<
class
T,
class
Allocator
=
std::
allocator
<
T
>
>
class polymorphic ; |
(1) | (начиная с C++26) |
|
namespace
pmr
{
template
<
class
T
>
|
(2) | (начиная с C++26) |
std::polymorphic
— это обёртка, содержащая динамически выделенный объект, который может быть различных типов, с семантикой по значению.
Объект
std::polymorphic
управляет
временем жизни
принадлежащего ему объекта. Принадлежащий объект имеет тип
T
или любой тип (публично и однозначно) производный от
T
. Объект
std::polymorphic
может не иметь принадлежащего объекта только после перемещения, в этом случае он является
неимеющим значения
.
Каждый объект типа
std::polymorphic<T, Allocator>
использует объект типа
Allocator
для выделения и освобождения памяти для содержащегося объекта по мере необходимости.
Если программа объявляет явную или частичную специализацию
std::polymorphic
, поведение не определено.
Содержание |
Параметры шаблона
| T | - | тип владеемого объекта |
| Allocator | - | тип связанного аллокатора |
| Требования к типам | ||
-
T
может быть
неполным типом
.
|
||
-
T
является одним из следующих типов, программа некорректна:
|
||
-
Allocator
не удовлетворяет требованиям
Allocator
, программа некорректна.
|
||
-
T
, программа некорректна.
|
||
Вложенные типы
| Тип | Определение |
value_type
|
T
|
allocator_type
|
Allocator
|
pointer
|
typename std:: allocator_traits < Allocator > :: pointer |
const_pointer
|
typename std:: allocator_traits < Allocator > :: const_pointer |
Члены данных
| Участник | Описание |
Allocator
alloc
|
Связанный аллокатор
( объект-член только для демонстрации* ) |
Функции-члены
создает объект
polymorphic
(public member function) |
|
|
уничтожает хранимое значение, если оно есть
(public member function) |
|
|
присваивает содержимое
(public member function) |
|
Наблюдатели |
|
|
предоставляет доступ к хранимому значению
(public member function) |
|
проверяет, является ли
polymorphic
пустым
(public member function) |
|
|
возвращает связанный аллокатор
(public member function) |
|
Модификаторы |
|
|
обменивает содержимое
(public member function) |
|
Функции, не являющиеся членами класса
|
(C++26)
|
специализирует алгоритм
std::swap
(шаблон функции) |
Примечания
| Макрос тестирования возможностей | Значение | Стандарт | Возможность |
|---|---|---|---|
__cpp_lib_polymorphic
|
202502L
|
(C++26) |
std::polymorphic
|
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
(C++26)
|
обёртка, содержащая динамически выделяемый объект с семантикой значения
(шаблон класса) |