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, используя глобальную форму placement new.
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::operatornew, программа может быть некорректной | вместо этого используется глобальная заменающая функция new |
См. также
|
[статический] | создаёт объект в выделенном хранилище (шаблон функции) |
|
(C++20) | создаёт объект по заданному адресу (шаблон функции и функциональный объект-алгоритм) |
|
(C++20) | |
| функции выделения памяти (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/allocator/construct