inout_ptr_t_inout_ptr
inout_ptr_t_inout_ptr (std::inout_ptr)
<memory> 헤더에 정의되어 있어요. 참조로 재설정할 인자들을 포착한 inout_ptr_t를 추론된 템플릿 인자로 돌려주는 헬퍼 함수예요. C++23부터 도입됐어요.
출처: cppreference
본문
template< class Pointer = void, class Smart, class... Args >
auto inout_ptr( Smart& s, Args&&... args );
(C++23부터, constexpr since C++26)
재설정(reset)할 인자들을 참조로 포착하는, 템플릿 인자가 추론된 inout_ptr_t를 돌려줘요. 반환값의 구성(아래 참고)이 ill-formed이면 프로그램은 ill-formed예요.
매개변수
s: 적응시킬 객체(보통 스마트 포인터)args: 포착할 재설정 인자들
반환값
std::inout_ptr_t<Smart, P, Args&&>(s, std::forward<Args>(args)...)를 돌려줘요. 여기서 P는:
Pointer가void가 아니면Pointer,- 아니면
Smart::pointer가 유효하고 타입을 나타내면 그것, - 아니면
Smart::element_type*(만약Smart::element_type이 유효하면), - 아니면 구현 정의 방식으로 결정된 타입.
std::unique_ptr<T> p;
// 외부 C 함수가 T** 로 소유권을 돌려줄 때
foo(std::inout_ptr(p)); // inout_ptr_t 를 생성해 전달
이 헬퍼는 외부 함수가 소유권을 재설정하는 패턴을 스마트 포인터에 적응시키는 데 사용해요.