std::allocator_traits::construct
Материал из cppreference.com
< cpp | memory | allocator traits
Определено в заголовочном файле <memory>
|
||
template< class T, class... Args > static void construct( Alloc& a, T* p, Args&&... args ); |
(начиная с C++11) (до C++20) |
|
template< class T, class... Args > static constexpr void construct( Alloc& a, T* p, Args&&... args ); |
(начиная с C++20) | |
Если возможно, создаёт объект типа T
в выделенной неинициализированной памяти, на которую указывает p, путём вызова
a.construct(p, std::forward<Args>(args)...)
Если вышеуказанное невозможно (например, Alloc
не имеет функции-элемента construct()
), то вызывает
::new (static_cast<void*>(p)) T(std::forward<Args>(args)...) |
(до C++20) |
std::construct_at(p, std::forward<Args>(args)...) |
(начиная с C++20) |
Содержание |
[править] Параметры
a | — | аллокатор, используемый для создания |
p | — | указатель на неинициализированное хранилище, в котором будет создан объект T
|
args... | — | аргументы конструктора для передачи в a.construct() или в размещаемый new (до C++20)std::construct_at() (начиная с C++20) |
[править] Возвращаемое значение
(нет)
[править] Примечание
Эта функция используется контейнерами стандартной библиотеки при вставке, копировании или перемещении элементов.
Поскольку эта функция обеспечивает автоматический возврат к размещающему new, функция-элемент construct()
является необязательным требованием Allocator, начиная с C++11.
[править] Смотрите также
функции распределения памяти (функция) | |
(до C++20) |
создаёт объект в выделенном хранилище (public функция-элемент std::allocator )
|
(C++20) |
создаёт объект по заданному адресу (шаблон функции) |