Spec-Zone.ru › C++

std::allocator_traits<Alloc>::construct

Определено в заголовке <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() или в placement-new(до C++20)std::construct_at()(с C++20)

Возвращаемое значение

(ничего)

Примечания

Эта функция используется стандартными библиотечными контейнерами при вставке, копировании или перемещении элементов.

Поскольку эта функция предоставляет автоматический возврат к placement new, функция-член construct() является необязательным требованием для Allocator с C++11.

См. также

operator newoperator new[]
функции выделения памяти
(функция)
construct
(до C++20)
создаёт объект в выделенной памяти
(публичная функция-член std::allocator<T> )
construct_at
(C++20)
создаёт объект по заданному адресу
(шаблон функции)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/allocator_traits/construct

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API