Spec-Zone.ru › C++

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>. Указатель на результат используется в качестве параметров размещения выражения размещающего new.

Изначально возвращаемое значение было const_cast<void*>(static_cast<const volatile void*>(std::addressof(obj))), что нарушало корректность константности. Явные приведения были удалены в результате разрешения вопроса LWG 3870; осталось только неявное преобразование в void*.

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.

DR Применён к Опубликованное поведение Правильное поведение
LWG 3870 C++98 явные приведения нарушали корректность константности эти приведения удалены

См. также

construct_at
(C++20)
создаёт объект по заданному адресу
(шаблон функции и функциональный объект алгоритма)
ranges::construct_at
(C++20)
uninitialized_copy
копирует диапазон объектов в неинициализированную область памяти
(шаблон функции и функциональный объект алгоритма)
ranges::uninitialized_copy
(C++20)
uninitialized_copy_n
(C++11)
копирует заданное число объектов в неинициализированную область памяти
(шаблон функции и функциональный объект алгоритма)
ranges::uninitialized_copy_n
(C++20)
uninitialized_fill
копирует объект в неинициализированную область памяти, задаваемую диапазоном
(шаблон функции и функциональный объект алгоритма)
ranges::uninitialized_fill
(C++20)
uninitialized_fill_n
копирует объект в неинициализированную область памяти, задаваемую начальной позицией и количеством элементов
(шаблон функции и функциональный объект алгоритма)
ranges::uninitialized_fill_n
(C++20)
uninitialized_move
(C++17)
перемещает диапазон объектов в неинициализированную область памяти
(шаблон функции и функциональный объект алгоритма)
ranges::uninitialized_move
(C++20)
uninitialized_move_n
(C++17)
перемещает заданное число объектов в неинициализированную область памяти
(шаблон функции и функциональный объект алгоритма)
ranges::uninitialized_move_n
(C++20)
uninitialized_default_construct
(C++17)
создаёт объекты посредством инициализации по умолчанию в неинициализированной области памяти, задаваемой диапазоном
(шаблон функции и функциональный объект алгоритма)
ranges::uninitialized_default_construct
(C++20)
uninitialized_default_construct_n
(C++17)
создаёт объекты посредством инициализации по умолчанию в неинициализированной области памяти, задаваемой начальной позицией и количеством элементов
(шаблон функции и функциональный объект алгоритма)
ranges::uninitialized_default_construct_n
(C++20)
uninitialized_value_construct
(C++17)
создаёт объекты посредством инициализации значением в неинициализированной области памяти, задаваемой диапазоном
(шаблон функции и функциональный объект алгоритма)
ranges::uninitialized_value_construct
(C++20)
uninitialized_value_construct_n
(C++17)
создаёт объекты посредством инициализации значением в неинициализированной области памяти, задаваемой начальной позицией и количеством элементов
(шаблон функции и функциональный объект алгоритма)
ranges::uninitialized_value_construct_n
(C++20)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/voidify

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API