名前空間
変種
操作

voidify

From cppreference.com
< cpp‎ | memory
 
 
メモリ管理ライブラリ
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* に変換して)返します。

目次

[edit] Parameters

obj - アドレスを取得するオブジェクト

[edit] Return value

&obj

(C++11まで)

std::addressof(obj)

(C++11以降)

[edit] Notes

この説明専用関数は P0896R4 によって導入されました。未初期化メモリ領域にオブジェクトを構築する 未初期化メモリアルゴリズム の効果を記述するために使用されます。返されたポインタは、配置 new 式placement-params として使用されます。

当初、戻り値は const_cast<void*>(static_cast<const volatile void*>(std::addressof(obj))) でしたが、これは const 適格性を壊していました。明示的なキャストは LWG issue 3870 の解決によって削除され、残った唯一の変換は void* への暗黙の変換です。

[edit] Defect reports

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 3870 C++98 明示的なキャストが const 適格性を壊していました。 これらのキャストを削除しました。

[edit] See also

オブジェクトの範囲を未初期化メモリ領域にコピーします
(関数テンプレート) [編集]
オブジェクトの範囲を未初期化メモリ領域にコピーします
(アルゴリズム関数オブジェクト)[編集]
範囲で定義された未初期化メモリ領域にオブジェクトをコピーします
(関数テンプレート) [編集]
範囲で定義された未初期化メモリ領域にオブジェクトをコピーします
(アルゴリズム関数オブジェクト)[編集]
オブジェクトの範囲を未初期化メモリ領域にムーブします
(関数テンプレート) [編集]
オブジェクトの範囲を未初期化メモリ領域にムーブします
(アルゴリズム関数オブジェクト)[編集]
範囲で定義された未初期化メモリ領域に、デフォルト初期化によってオブジェクトを構築します
(関数テンプレート) [編集]
範囲で定義された未初期化メモリ領域に、デフォルト初期化によってオブジェクトを構築します
(アルゴリズム関数オブジェクト)[編集]
範囲で定義された未初期化メモリ領域に、値初期化によってオブジェクトを構築します
(関数テンプレート) [編集]
範囲で定義された未初期化メモリ領域に、値初期化によってオブジェクトを構築します
(アルゴリズム関数オブジェクト)[編集]
与えられたアドレスにオブジェクトを作成します
(関数テンプレート) [編集]
与えられたアドレスにオブジェクトを作成します
(アルゴリズム関数オブジェクト)[編集]
English 日本語 中文(简体) 中文(繁體)