std::allocator<T>::construct
Определено в заголовке <memory> |
||
|---|---|---|
void construct( pointer p, const_reference val ); |
(1) | (до C++11) |
template< class U, class... Args > void construct( U* p, Args&&... args ); |
(2) | (с C++11) (устарело в C++17) (удалено в C++20) |
Создаёт объект типа T в выделенном неинициализированном хранилище, на которое указывает p, используя глобальный оператор размещения.
1) Вызывает
::new((void*)p) T(val).
2) Вызывает
::new((void*)p) U(std::forward<Args>(args)...).Параметры
| p | - | указатель на выделенное неинициализированное хранилище |
| val | - | значение, используемое в качестве аргумента конструктора копирования |
| args... | - | аргументы конструктора для использования |
Возвращаемое значение
(нет)
Отчёты о дефектах
Следующие отчёты о дефектах, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применено к | Поведение, как опубликовано | Корректное поведение |
|---|---|---|---|
| LWG 402 | C++98 | если T::operator new существует, программа может быть некорректной | используется глобальный оператор размещения вместо него |
См. также
|
[статический] |
создаёт объект в выделенном хранилище (шаблон функции) |
|
(C++20) |
создаёт объект по заданному адресу (шаблон функции) |
| функции выделения памяти (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/allocator/construct