voidify
ja.cppreference.net より
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 issue 3870の解決により削除され、残っている変換はvoid*への暗黙の変換のみです。
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 3870 | C++98 | explicitキャストがconst正確性を破壊していた | これらのキャストを削除 |
関連項目
(C++20) |
指定されたアドレスにオブジェクトを作成する (関数テンプレート & アルゴリズム関数オブジェクト) |
(C++20) |
|
| オブジェクトの範囲を未初期化のメモリ領域にコピーする (関数テンプレート & アルゴリズム関数オブジェクト) | |
(C++20) |
|
(C++11) |
指定個数のオブジェクトを未初期化のメモリ領域にコピーする (関数テンプレート & アルゴリズム関数オブジェクト) |
(C++20) |
|
| 範囲で定義された未初期化のメモリ領域にオブジェクトをコピーする (関数テンプレート & アルゴリズム関数オブジェクト) | |
(C++20) |
|
| 開始位置と個数で定義された未初期化のメモリ領域にオブジェクトをコピーする (関数テンプレート & アルゴリズム関数オブジェクト) | |
(C++20) |
|
(C++17) |
オブジェクトの範囲を未初期化のメモリ領域に移動する (関数テンプレート & アルゴリズム関数オブジェクト) |
(C++20) |
|
(C++17) |
指定個数のオブジェクトを未初期化のメモリ領域に移動する (関数テンプレート & アルゴリズム関数オブジェクト) |
(C++20) |
| 範囲で定義された未初期化のメモリ領域にデフォルト初期化によりオブジェクトを構築する (関数テンプレート & アルゴリズム関数オブジェクト) | |
| 開始位置と個数で定義された未初期化のメモリ領域にデフォルト初期化によりオブジェクトを構築する (関数テンプレート & アルゴリズム関数オブジェクト) | |
| 範囲で定義された未初期化のメモリ領域に値初期化によりオブジェクトを構築する (関数テンプレート & アルゴリズム関数オブジェクト) | |
| 開始位置と個数で定義された未初期化のメモリ領域に値初期化によりオブジェクトを構築する (関数テンプレート & アルゴリズム関数オブジェクト) | |