std::out_ptr_t<Smart,Pointer,Args...>:: ~out_ptr_t
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
out_ptr_t::~out_ptr_t
|
||||
| Non-member functions | ||||
|
~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
특수화인 경우, 구현체는 소멸자에서 예외를 던지지 않는 작업을 수행하기 위해 생성 시 새로운 제어 블록에 대한 저장 공간을 할당할 수 있습니다.
값으로 캡처된 인수들은 재설정 후에 소멸됩니다.