voidify

来自cppreference.com


 
 
算法库
受约束算法及范围上的算法 (C++20)
包含算法例如 ranges::copyranges::sort、...
排序和相关操作
划分操作
(C++11)    

排序操作
二分搜索操作(在已划分范围上)
集合操作(在有序范围上)
归并操作(在有序范围上)
堆操作
最小/最大操作
(C++11)
(C++17)
字典序比较操作
排列操作




 
 
template< class T >
void* /*voidify*/( T& obj ) noexcept;
(仅用于阐述*)
(C++17 起为 constexpr)

返回 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))),它破坏了 const 正确性。LWG 问题 3870 的解决方案移除了这些显式转型,只剩下到 void* 的隐式转换。

缺陷报告

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

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

参阅

在给定地址创建对象
(函数模板 & 算法函数对象)[编辑]
复制范围中对象到未初始化内存
(函数模板 & 算法函数对象)[编辑]
复制若干对象到未初始化内存
(函数模板 & 算法函数对象)[编辑]
复制一个对象到范围所定义的未初始化内存
(函数模板 & 算法函数对象)[编辑]
复制一个对象到起点和数量所定义的未初始化内存
(函数模板 & 算法函数对象)[编辑]
移动范围中对象到未初始化内存
(函数模板 & 算法函数对象)[编辑]
移动若干对象到未初始化内存
(函数模板 & 算法函数对象)[编辑]
在范围所定义的未初始化内存中用默认初始化构造对象
(函数模板 & 算法函数对象)[编辑]
在起点和数量所定义的未初始化内存中用默认初始化构造对象
(函数模板 & 算法函数对象)[编辑]
在范围所定义的未初始化内存中用值初始化构造对象
(函数模板 & 算法函数对象)[编辑]
在起点和数量所定义的未初始化内存中用值初始化构造对象
(函数模板 & 算法函数对象)[编辑]