voidify
template< class T >
void* /*voidify*/( T& obj ) noexcept;
|
(только для пояснения*) (constexpr начиная с C++17) |
|
Возвращает адрес obj (неявно преобразовано в void*).
Параметры
| obj | - | объект, адрес которого будет взят |
Возвращаемое значение
|
& obj |
(до C++11) |
|
std:: addressof ( obj ) |
(начиная с C++11) |
Примечания
Этот шаблон функции, предназначенный только для демонстрации, введён в P0896R4. Он используется для описания эффектов специализированных <memory> алгоритмов. Результирующий указатель используется в качестве placement-params размещающего new выражения.
Изначально возвращаемое значение было const_cast<void*>(static_cast<const volatile void*>(std::addressof(obj))), что нарушает константную корректность. Явные приведения типов были удалены при разрешении LWG issue 3870, и единственным оставшимся преобразованием является неявное преобразование в void*.
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3870 | C++98 | the explicit casts broke const-correctness | removed these casts |
См. также
(C++20) |
создаёт объект по заданному адресу (шаблон функции & объект-функция алгоритма) |
(C++20) |
|
| копирует диапазон объектов в неинициализированную область памяти (шаблон функции & объект-функция алгоритма) | |
(C++20) |
|
(C++11) |
копирует заданное количество объектов в неинициализированную область памяти (шаблон функции & объект-функция алгоритма) |
(C++20) |
|
| копирует объект в неинициализированную область памяти, определённую диапазоном (шаблон функции & объект-функция алгоритма) | |
(C++20) |
|
| копирует объект в неинициализированную область памяти, определённую началом и количеством (шаблон функции & объект-функция алгоритма) | |
(C++20) |
|
(C++17) |
перемещает диапазон объектов в неинициализированную область памяти (шаблон функции & объект-функция алгоритма) |
(C++20) |
|
(C++17) |
перемещает заданное количество объектов в неинициализированную область памяти (шаблон функции & объект-функция алгоритма) |
(C++20) |
| конструирует объекты с помощью инициализации по умолчанию в неинициализированной области памяти, определённой диапазоном (шаблон функции & объект-функция алгоритма) | |
| конструирует объекты с помощью инициализации по умолчанию в неинициализированной области памяти, определённой началом и количеством (шаблон функции & объект-функция алгоритма) | |
| конструирует объекты с помощью инициализации значением в неинициализированной области памяти, определённой диапазоном (шаблон функции & объект-функция алгоритма) | |
| конструирует объекты с помощью инициализации значением в неинициализированной области памяти, определённой началом и количеством (шаблон функции & объект-функция алгоритма) | |