voidify
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
template
<
class
T
>
void * voidify ( T & obj ) noexcept ; |
(
説明専用*
)
(constexpr since C++17) |
|
obj のアドレスを返します (暗黙的に void * に変換されます)。
目次 |
パラメータ
| obj | - | アドレスが取得されるオブジェクト |
戻り値
|
& obj |
(C++11まで) |
|
std:: addressof ( obj ) |
(C++11以降) |
注記
この説明専用の関数は P0896R4 によって導入されました。これは未初期化メモリ領域でオブジェクトを構築する uninitialized memory algorithms の効果を記述するために使用されます。結果ポインタは placement new expression の placement-params として使用されます。
当初、戻り値は 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++17)
|
オブジェクトの範囲を未初期化メモリ領域にムーブする
(関数テンプレート) |
|
(C++20)
|
オブジェクトの範囲を未初期化メモリ領域にムーブする
(アルゴリズム関数オブジェクト) |
|
(C++17)
|
範囲で定義された未初期化メモリ領域で
デフォルト初期化
によってオブジェクトを構築する
(関数テンプレート) |
|
範囲で定義された未初期化メモリ領域で
デフォルト初期化
によってオブジェクトを構築する
(アルゴリズム関数オブジェクト) |
|
|
(C++17)
|
範囲で定義された未初期化メモリ領域で
値初期化
によってオブジェクトを構築する
(関数テンプレート) |
|
範囲で定義された未初期化メモリ領域で
値初期化
によってオブジェクトを構築する
(アルゴリズム関数オブジェクト) |
|
|
(C++20)
|
指定されたアドレスにオブジェクトを作成する
(関数テンプレート) |
|
(C++20)
|
指定されたアドレスにオブジェクトを作成する
(アルゴリズム関数オブジェクト) |