std::allocator::construct
Материал из cppreference.com
Определено в заголовочном файле <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) |
создаёт объект по заданному адресу (шаблон функции) |
функции распределения памяти (функция) |