voidify
template< class T > void* /*voidify*/( T& obj ) noexcept; |
(constexpr начиная с C++17) (только для пояснения*) |
Возвращает адрес obj (неявно преобразованный в void*).
Параметры
| obj | - | объект, адрес которого будет получен |
Возвращаемое значение
|
| (до C++11) |
|
| (начиная с C++11) |
Примечания
Этот шаблон функции, существующий только для пояснения, введён в P0896R4. Он используется для описания эффектов специализированных алгоритмов <memory>. Указатель на результат используется в качестве параметров размещения выражения размещающего new.
Изначально возвращаемое значение было const_cast<void*>(static_cast<const volatile void*>(std::addressof(obj))), что нарушало корректность константности. Явные приведения были удалены в результате разрешения вопроса LWG 3870; осталось только неявное преобразование в void*.
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Применён к | Опубликованное поведение | Правильное поведение |
|---|---|---|---|
| LWG 3870 | C++98 | явные приведения нарушали корректность константности | эти приведения удалены |
См. также
|
(C++20) | создаёт объект по заданному адресу (шаблон функции и функциональный объект алгоритма) |
|
(C++20) | |
| копирует диапазон объектов в неинициализированную область памяти (шаблон функции и функциональный объект алгоритма) |
|
|
(C++20) | |
|
(C++11) | копирует заданное число объектов в неинициализированную область памяти (шаблон функции и функциональный объект алгоритма) |
|
(C++20) | |
| копирует объект в неинициализированную область памяти, задаваемую диапазоном (шаблон функции и функциональный объект алгоритма) |
|
|
(C++20) | |
| копирует объект в неинициализированную область памяти, задаваемую начальной позицией и количеством элементов (шаблон функции и функциональный объект алгоритма) |
|
|
(C++20) | |
|
(C++17) | перемещает диапазон объектов в неинициализированную область памяти (шаблон функции и функциональный объект алгоритма) |
|
(C++20) | |
|
(C++17) | перемещает заданное число объектов в неинициализированную область памяти (шаблон функции и функциональный объект алгоритма) |
|
(C++20) |
|
(C++17) | создаёт объекты посредством инициализации по умолчанию в неинициализированной области памяти, задаваемой диапазоном (шаблон функции и функциональный объект алгоритма) |
|
(C++20) | |
|
(C++17) | создаёт объекты посредством инициализации по умолчанию в неинициализированной области памяти, задаваемой начальной позицией и количеством элементов (шаблон функции и функциональный объект алгоритма) |
|
(C++20) | |
|
(C++17) | создаёт объекты посредством инициализации значением в неинициализированной области памяти, задаваемой диапазоном (шаблон функции и функциональный объект алгоритма) |
|
(C++20) | |
|
(C++17) | создаёт объекты посредством инициализации значением в неинициализированной области памяти, задаваемой начальной позицией и количеством элементов (шаблон функции и функциональный объект алгоритма) |
|
(C++20) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/voidify