voidify
來自 cppreference.com
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 正確性 | 移除了這些轉換 |
[編輯] 參閱
將物件範圍複製到未初始化記憶體區域 (函式模板) | |
(C++20) |
將物件範圍複製到未初始化記憶體區域 (演算法函式物件) |
將物件複製到由範圍定義的未初始化記憶體區域 (函式模板) | |
(C++20) |
將物件複製到由範圍定義的未初始化記憶體區域 (演算法函式物件) |
(C++17) |
將一系列物件移動到未初始化記憶體區域 (函式模板) |
(C++20) |
將一系列物件移動到未初始化記憶體區域 (演算法函式物件) |
透過預設初始化在由範圍定義的未初始化記憶體區域中構造物件 (函式模板) | |
透過預設初始化在由範圍定義的未初始化記憶體區域中構造物件 (演算法函式物件) | |
在由範圍定義的未初始化記憶體區域中,透過值初始化構造物件 (函式模板) | |
在由範圍定義的未初始化記憶體區域中,透過值初始化構造物件 (演算法函式物件) | |
(C++20) |
在給定地址建立物件 (函式模板) |
(C++20) |
在給定地址建立物件 (演算法函式物件) |