Namespaces
Variants

std::experimental::scope_fail<EF>:: scope_fail

From cppreference.net

template < class Fn >
explicit scope_fail ( Fn && fn ) noexcept ( /*see below*/ ) ;
(1) (라이브러리 fundamentals TS v3)
scope_fail ( scope_fail && other ) noexcept ( /*see below*/ ) ;
(2) (라이브러리 fundamentals TS v3)
scope_fail ( const scope_fail & ) = delete ;
(3) (라이브러리 fundamentals TS v3)

함수, 함수 객체 또는 다른 scope_fail 으로부터 scope_fail 을 생성합니다.

1) 함수나 함수 객체로 종료 함수를 초기화하고, std:: uncaught_exceptions ( ) 로 초기화된 것처럼 미처리 예외 카운터를 초기화합니다. 생성된 scope_fail 는 활성 상태입니다.
만약 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_fail > false 이고 std:: is_constructible_v < EF, Fn > true 인 경우입니다.
함수 호출 표현식 fn ( ) 가 잘못 형성된 경우 프로그램은 잘못 형성됩니다.
fn ( ) 호출이 예외를 발생시키거나 미정의 동작을 초래하는 경우, 심지어 fn 이 호출되지 않았더라도 동작은 미정의됩니다.
2) 이동 생성자. 저장된 EF other 의 것으로 초기화하고, 미처리 예외 카운터를 other 의 것으로 초기화합니다. 생성된 scope_fail 는 생성 전 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_fail CopyConstructible 이 아닙니다.

목차

매개변수

fn - 저장된 EF 를 초기화하는 데 사용되는 함수 또는 함수 객체
other - 이동할 scope_fail

예외

저장된 EF 의 초기화 과정에서 발생하는 모든 예외.

예제

참고 항목

( removed in C++20* ) (C++17)
예외 처리가 현재 진행 중인지 확인합니다
(함수)
scope_fail 을 비활성화합니다
(public member function)