Namespaces
Variants

std::inout_ptr_t<Smart,Pointer,Args...>:: inout_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)
explicit inout_ptr_t ( Smart & sp, Args... args ) ;
(1) (C++23 이후)
inout_ptr_t ( const inout_ptr_t & ) = delete ;
(2) (C++23 이후)
1) inout_ptr_t 를 생성합니다. sp Smart & 멤버에 바인딩된 것처럼 적응시키고, args... 내의 모든 인수 t std:: forward < T > ( t ) Args... 내의 T 타입 해당 멤버를 초기화하는 것처럼 캡처합니다. 그런 다음 저장된 Pointer Smart 가 포인터 타입인 경우 sp 로 초기화하고, 그렇지 않으면 sp. get ( ) 로 초기화합니다. Smart 가 포인터 타입이 아닌 경우 sp. release ( ) 가 호출될 수 있으며, 이 경우 소멸자 내에서 다시 호출되지 않습니다.
2) 복사 생성자가 명시적으로 삭제되었습니다. inout_ptr_t 는 복사 가능하지도 이동 가능하지도 않습니다.

목차

매개변수

sp - 적응할 객체 (일반적으로 스마트 포인터)
args... - 캡처할 재설정에 사용되는 인수들

반환값

(없음)

예외

구현 정의 예외를 던질 수 있습니다.

참고 사항

만약 Smart 가 포인터 타입이 아니고 생성자에서 sp. release ( ) 가 호출되지 않았다면, 소멸자에서 sp 를 재설정하기 전에 호출될 수 있습니다.

args... 내의 모든 인수는 객체 타입인 경우 생성된 inout_ptr_t 로 이동되고, 참조 타입인 경우 생성된 inout_ptr_t 로 그대로 전달됩니다.

inout_ptr_t 의 생성자는 예외를 던질 수 있습니다. 예를 들어, sp 가 컨트롤 블록을 가진 intrusive pointer인 경우, 새로운 컨트롤 블록에 대한 할당이 소멸자보다는 생성자 내에서 수행될 수 있습니다.

예제