Пространства имён
Варианты
Действия

std::allocator_traits::construct

Материал из cppreference.com
 
 
Динамическое управление памятью
no section name
Ограниченные алгоритмы неинициализированной памяти
no section name
Поддержка сбора мусора
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)



no section name
 
 
Определено в заголовочном файле <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) [править]
создаёт объект по заданному адресу
(шаблон функции) [править]