命名空间
变体
操作

voidify

来自 cppreference.cn
< cpp‎ | 内存
 
 
内存管理库
voidify
(仅作说明*)
未初始化内存算法
(C++17)
(C++17)
(C++17)
受约束的未初始化
内存算法
C 库

分配器
内存资源
垃圾回收支持
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
未初始化存储
(直到 C++20*)
(直到 C++20*)
显式生命周期管理
 
template< class T >
void* voidify( T& obj ) noexcept;
(仅作说明*)
(自 C++17 起为 constexpr)

返回 obj 的地址(隐式转换为 void*)。

目录

[编辑] 参数

obj - 要获取其地址的对象

[编辑] 返回值

&obj

(C++11 前)

std::addressof(obj)

(C++11 起)

[编辑] 注解

此仅用于阐释的函数由 P0896R4 引入。它用于描述 未初始化内存算法 的效果,这些算法在未初始化内存区域中构造对象。结果指针用作 定位 new 表达式placement-params

最初,返回值为 const_cast<void*>(static_cast<const volatile void*>(std::addressof(obj))),这破坏了 const 正确性。显式转换已通过 LWG issue 3870 的解决移除,只剩下隐式转换为 void*

[编辑] 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 发布时的行为 正确的行为
LWG 3870 C++98 显式转换破坏了 const 正确性 移除了这些转换

[编辑] 参阅

将对象范围复制到未初始化内存区域
(函数模板) [编辑]
将对象范围复制到未初始化内存区域
(算法函数对象)[编辑]
将对象复制到由范围定义的未初始化内存区域
(函数模板) [编辑]
将对象复制到由范围定义的未初始化内存区域
(算法函数对象)[编辑]
将一系列对象移动到未初始化内存区域
(函数模板) [编辑]
将一系列对象移动到未初始化内存区域
(算法函数对象)[编辑]
通过默认初始化在由范围定义的未初始化内存区域中构造对象
(函数模板) [编辑]
通过默认初始化在由范围定义的未初始化内存区域中构造对象
(算法函数对象)[编辑]
在由范围定义的未初始化内存区域中,通过值初始化构造对象
(函数模板) [编辑]
在由范围定义的未初始化内存区域中,通过值初始化构造对象
(算法函数对象)[编辑]
在给定地址创建对象
(函数模板) [编辑]
在给定地址创建对象
(算法函数对象)[编辑]