Namespaces
Variants

std::experimental::scope_exit<EF>:: scope_exit

From cppreference.net

template < class Fn >
explicit scope_exit ( Fn && fn ) noexcept ( /*see below*/ ) ;
(1) (ライブラリ基盤仕様 TS v3)
scope_exit ( scope_exit && other ) noexcept ( /*see below*/ ) ;
(2) (ライブラリ基盤仕様 TS v3)
scope_exit ( const scope_exit & ) = delete ;
(3) (ライブラリ基盤仕様 TS v3)

関数、関数オブジェクト、または他の scope_exit から scope_exit を作成します。

1) 関数または関数オブジェクトで終了関数を初期化します。構築された scope_exit はアクティブ状態です。
Fn がlvalue参照型ではなく、かつ std:: is_nothrow_constructible_v < EF, Fn > true の場合、保存される EF std:: forward < Fn > ( fn ) で初期化される。それ以外の場合は fn で初期化される。
保存された EF の初期化が例外をスローした場合、 fn ( ) を呼び出します。
このオーバーロードは、以下の条件が満たされる場合にのみオーバーロード解決に参加します: std:: is_same_v < std:: remove_cvref_t < Fn > , scope_exit > false であり、かつ std:: is_constructible_v < EF, Fn > true である場合です。
関数呼び出し式 fn ( ) が不適格である場合、プログラムは不適格です。
fn の呼び出しが例外をスローする場合、または未定義動作を引き起こす場合、たとえ fn が呼び出されていない場合でも、動作は未定義です。
2) ムーブコンストラクタ。格納された EF other 内のもので初期化します。構築された scope_exit は、構築前に other がアクティブであった場合にのみアクティブになります。
std:: is_nothrow_move_constructible_v < EF > true の場合、格納された EF exitfun で示される)を std:: forward < EF > ( other. exitfun ) で初期化し、それ以外の場合は other. exitfun で初期化する。
正常にムーブ構築が完了した後、 other. release ( ) が呼び出され、 other は非アクティブ状態になります。
このオーバーロードは、以下の条件のいずれかが満たされる場合にのみオーバーロード解決に参加します: std:: is_nothrow_move_constructible_v < EF > true であるか、または std:: is_copy_constructible_v < EF > true である場合です。
以下の場合、動作は未定義である:
3) scope_exit CopyConstructible ではありません。

目次

パラメータ

fn - 格納される EF を初期化するために使用される関数または関数オブジェクト
other - scope_exit からムーブする対象

例外

保存された EF の初期化中にスローされた例外。

1)
noexcept noexcept指定:

関連項目

scope_exit を非アクティブにする
(公開メンバ関数)