std::allocator::construct
Материал из cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev ">
</tbody><tbody>
</tbody>
| Определено в заголовочном файле <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, используя глобальный размещающий new.
1) Вызывает
::new((void*)p) T(val).2) Вызывает
::new((void*)p) U(std::forward<Args>(args)...).Параметры
| p | — | указатель на выделенное неинициализированное хранилище |
| val | — | значение используемое в качестве аргумента конструктора копирования |
| args... | — | используемые аргументы конструктора |
Возвращаемое значение
(нет)
Отчёты о дефектах
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
| Номер | Применён | Поведение в стандарте | Корректное поведение |
|---|---|---|---|
| LWG 402 | C++98 | если T::operator new существует, программаможет быть некорректна |
вместо этого использует глобальный размещающий new |
Смотрите также
[static] |
создаёт объект в выделенном хранилище (шаблон функции) |
(C++20) |
создаёт объект по заданному адресу (шаблон функции) |
| функции распределения памяти (функция) |