Namespaces
Variants

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

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
~out_ptr_t ( ) ;
(C++23부터)

수정된 Pointer 객체(또는 void * 객체가 operator void ** ( ) 호출된 경우)의 값과 캡처된 인수들로 적응된 Smart 객체를 재설정합니다.

다음을 가정합니다

  • s 는 적응된 Smart 객체를 나타냅니다,
  • args... 는 캡처된 인수들을 나타냅니다,
  • p 는 저장된 Pointer 의 값을 나타내거나, static_cast < Pointer > ( * operator void ** ( ) ) 만약 operator void ** 가 호출된 경우입니다,
  • SP
    • Smart :: pointer , 유효하고 타입을 나타내는 경우, 그렇지 않으면
    • Smart :: element_type * , 만약 Smart :: element_type 가 유효하고 타입을 나타내는 경우, 그렇지 않으면
    • std:: pointer_traits < Smart > :: element_type * , 만약 std:: pointer_traits < Smart > :: element_type 가 유효하고 타입을 나타내는 경우, 그렇지 않으면
    • Pointer 입니다.

만약 s. reset ( static_cast < SP > ( p ) , std:: forward < Args > ( args ) ... ) 가 올바른 형식이라면, 소멸자는 다음을 수행합니다

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 ) ... ) ; ,

그렇지 않으면 프로그램의 형식이 잘못되었습니다.

참고 사항

만약 Smart std::shared_ptr 특수화인 경우, 구현체는 소멸자에서 예외를 던지지 않는 작업을 수행하기 위해 생성 시 새로운 제어 블록에 대한 저장 공간을 할당할 수 있습니다.

값으로 캡처된 인수들은 재설정 후에 소멸됩니다.