Namespaces
Variants

voidify

From cppreference.net
Memory management library
voidify
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
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正確性を破壊していた これらのキャストを削除

関連項目

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