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) | создаёт объект по заданному адресу (шаблон функции) |
функции распределения памяти (функция) |