Namespaces
Variants

std::experimental::scope_success<EF>:: scope_success

From cppreference.net

template < class Fn >
explicit scope_success ( Fn && fn ) noexcept ( /*下記参照*/ ) ;
(1) (ライブラリ基盤仕様 TS v3)
scope_success ( scope_success && other ) noexcept ( /*下記参照*/ ) ;
(2) (ライブラリ基盤仕様 TS v3)
scope_success ( const scope_success & ) = delete ;
(3) (ライブラリ基盤仕様 TS v3)

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

1) 関数または関数オブジェクトで終了関数を初期化し、未捕捉例外のカウンタを std:: uncaught_exceptions ( ) で初期化したかのように設定します。構築された scope_success はアクティブ状態です。
Fn がlvalue参照型ではなく、かつ std:: is_nothrow_constructible_v < EF, Fn > true の場合、格納されている EF std:: forward < Fn > ( fn ) で初期化される。それ以外の場合は fn で初期化される。
このオーバーロードは、以下の条件が満たされる場合にのみオーバーロード解決に参加します: std:: is_same_v < std:: remove_cvref_t < Fn > , scope_success > false であり、かつ std:: is_constructible_v < EF, Fn > true である場合。
関数呼び出し式 fn ( ) が不適格である場合、プログラムは不適格です。
fn の呼び出しが未定義動作を引き起こす場合、たとえ fn が実際に呼び出されていない場合でも、動作は未定義となる。
2) ムーブコンストラクタ。格納された EF other 内のもので初期化し、未捕捉例外のカウンタを other 内のもので初期化します。構築された scope_success は、構築前に 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_success CopyConstructible ではありません。

目次

パラメータ

fn - 格納される EF を初期化するための関数または関数オブジェクト
other - ムーブ元の scope_success

例外

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

1)
noexcept noexcept指定:

関連項目

( C++20で削除* ) (C++17)
例外処理が現在進行中かどうかをチェックする
(関数)
scope_success を非アクティブにする
(公開メンバ関数)