Namespaces
Variants

voidify

ja.cppreference.net より
 
 
アルゴリズムライブラリ
制約付きアルゴリズムとレンジに対するアルゴリズム (C++20)
制約付きアルゴリズム、例: ranges::copy, ranges::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 issue 3870の解決により削除され、残っている変換はvoid*への暗黙の変換のみです。

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 3870 C++98 explicitキャストがconst正確性を破壊していた これらのキャストを削除

関連項目

指定されたアドレスにオブジェクトを作成する
(関数テンプレート & アルゴリズム関数オブジェクト)
オブジェクトの範囲を未初期化のメモリ領域にコピーする
(関数テンプレート & アルゴリズム関数オブジェクト)
指定個数のオブジェクトを未初期化のメモリ領域にコピーする
(関数テンプレート & アルゴリズム関数オブジェクト)
範囲で定義された未初期化のメモリ領域にオブジェクトをコピーする
(関数テンプレート & アルゴリズム関数オブジェクト)
開始位置と個数で定義された未初期化のメモリ領域にオブジェクトをコピーする
(関数テンプレート & アルゴリズム関数オブジェクト)
オブジェクトの範囲を未初期化のメモリ領域に移動する
(関数テンプレート & アルゴリズム関数オブジェクト)
指定個数のオブジェクトを未初期化のメモリ領域に移動する
(関数テンプレート & アルゴリズム関数オブジェクト)
範囲で定義された未初期化のメモリ領域にデフォルト初期化によりオブジェクトを構築する
(関数テンプレート & アルゴリズム関数オブジェクト)
開始位置と個数で定義された未初期化のメモリ領域にデフォルト初期化によりオブジェクトを構築する
(関数テンプレート & アルゴリズム関数オブジェクト)
範囲で定義された未初期化のメモリ領域に値初期化によりオブジェクトを構築する
(関数テンプレート & アルゴリズム関数オブジェクト)
開始位置と個数で定義された未初期化のメモリ領域に値初期化によりオブジェクトを構築する
(関数テンプレート & アルゴリズム関数オブジェクト)