名前空間
変種
操作

std::out_ptr_t<Smart,Pointer,Args...>::~out_ptr_t

From cppreference.com
< cpp‎ | memory‎ | out ptr t
 
 
メモリ管理ライブラリ
(説明用*)
未初期化メモリのアルゴリズム
(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まで*)
明示的な生存期間管理
 
 
~out_ptr_t();
(C++23から)

変更されたPointerオブジェクトの値(または、operator void**()が呼び出された場合はvoid*オブジェクト)とキャプチャされた引数によって、アダプトされたSmartオブジェクトをリセットします。

以下とする:

  • sはアダプトされたSmartオブジェクトを表します。
  • args...はキャプチャされた引数を表します。
  • pは格納されているPointerの値、またはoperator void**が呼び出された場合はstatic_cast<Pointer>(*operator void**())を表します。
  • SP
    • Smart::pointer が有効で型を示す場合、それ以外の場合、
    • Smart::element_type が有効で型を示す場合、Smart::element_type*、それ以外の場合、
    • std::pointer_traits<Smart>::element_type*、(std::pointer_traits<Smart>::element_typeが有効で型を示す場合)です。
    • ポインタ.

もしs.reset(static_cast<SP>(p), std::forward<Args>(args)...)がwell-formedであれば、デストラクタは以下を実行します。

if (p) s.reset(static_cast<SP>(p), std::forward<Args>(args)...);,

そうでなく、もしstd::is_constructible_v<Smart, SP, Args...>trueであれば、デストラクタは以下を実行します。

if (p) s = Smart(static_cast<SP>(p), std::forward<Args>(args)...);,

それ以外の場合、プログラムはill-formedです。

[編集] 注記

Smartstd::shared_ptrの特殊化である場合、実装はコンストラクタで新しい制御ブロックのストレージを割り当てる可能性があり、デストラクタに例外を投げない処理を残すことができます。

値によってキャプチャされた引数は、リセット後に破棄されます。

English 日本語 中文(简体) 中文(繁體)