Namespaces
Variants

voidify

From cppreference.net
Memory management library
voidify
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
template < class T >
void * voidify ( T & obj ) noexcept ;
( только для демонстрации* )
(constexpr начиная с C++17)

Возвращает адрес obj (неявно преобразованного в void * ).

Содержание

Параметры

obj - объект, адрес которого будет взят

Возвращаемое значение

& obj

(до C++11)

std:: addressof ( obj )

(начиная с C++11)

Примечания

Эта функция только для демонстрации введена P0896R4 . Она используется для описания эффектов алгоритмов неинициализированной памяти , которые конструируют объекты в неинициализированных областях памяти. Результирующий указатель используется как 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

Смотрите также

копирует диапазон объектов в неинициализированную область памяти
(шаблон функции)
копирует диапазон объектов в неинициализированную область памяти
(функциональный объект алгоритма)
копирует объект в неинициализированную область памяти, определяемую диапазоном
(шаблон функции)
копирует объект в неинициализированную область памяти, определяемую диапазоном
(функциональный объект алгоритма)
перемещает диапазон объектов в неинициализированную область памяти
(шаблон функции)
перемещает диапазон объектов в неинициализированную область памяти
(функциональный объект алгоритма)
конструирует объекты с помощью default-initialization в неинициализированной области памяти, определяемой диапазоном
(шаблон функции)
конструирует объекты с помощью default-initialization в неинициализированной области памяти, определяемой диапазоном
(функциональный объект алгоритма)
конструирует объекты с помощью value-initialization в неинициализированной области памяти, определяемой диапазоном
(шаблон функции)
конструирует объекты с помощью value-initialization в неинициализированной области памяти, определяемой диапазоном
(функциональный объект алгоритма)
создает объект по заданному адресу
(шаблон функции)
создает объект по заданному адресу
(функциональный объект алгоритма)