Namespaces
Variants

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

From cppreference.net

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

함수, 함수 객체 또는 다른 scope_success 로부터 scope_success 를 생성합니다.

1) 함수나 함수 객체로 종료 함수를 초기화하고, std:: uncaught_exceptions ( ) 로 예외 미포획 카운터를 초기화하는 것처럼 동작합니다. 생성된 scope_success 는 활성 상태입니다.
만약 Fn 이 lvalue reference 타입이 아니고 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 의 초기화 과정에서 발생하는 모든 예외.

예제

참고 항목

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