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)
Определено в заголовочном файле <memory>
template < class T, class Allocator = std:: allocator < T > >
class polymorphic ;
(1) (начиная с C++26)
namespace pmr {

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

}
(2) (начиная с C++26)
1) std::polymorphic — это обёртка, содержащая динамически выделенный объект, который может быть различных типов, с семантикой по значению.
2) std::pmr::polymorphic является псевдонимом шаблона, который использует polymorphic allocator .

Объект std::polymorphic управляет временем жизни принадлежащего ему объекта. Принадлежащий объект имеет тип T или любой тип (публично и однозначно) производный от T . Объект std::polymorphic может не иметь принадлежащего объекта только после перемещения, в этом случае он является неимеющим значения .

Каждый объект типа std::polymorphic<T, Allocator> использует объект типа Allocator для выделения и освобождения памяти для содержащегося объекта по мере необходимости.

Если программа объявляет явную или частичную специализацию std::polymorphic , поведение не определено.

Содержание

Параметры шаблона

T - тип владеемого объекта
Allocator - тип связанного аллокатора
Требования к типам
-
T может быть неполным типом .
-
Если T является одним из следующих типов, программа некорректна:
-
Если Allocator не удовлетворяет требованиям Allocator , программа некорректна.
-
Если std:: allocator_traits < Allocator > :: value_type не совпадает с типом 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)

Функции, не являющиеся членами класса

специализирует алгоритм std::swap
(шаблон функции)

Примечания

Макрос тестирования возможностей Значение Стандарт Возможность
__cpp_lib_polymorphic 202502L (C++26) std::polymorphic

Пример

Смотрите также

(C++26)
обёртка, содержащая динамически выделяемый объект с семантикой значения
(шаблон класса)