out_ptr_t_out_ptr

out_ptr_t_out_ptr (std::out_ptr)

<memory> 헤더에 정의되어 있어요. 참조로 재설정할 인자들을 포착한 std::out_ptr_t를 추론된 템플릿 인자로 돌려주는 헬퍼 함수예요. C++23부터 도입됐어요.

출처: cppreference

본문

template< class Pointer = void, class Smart, class... Args >
auto out_ptr( Smart& s, Args&&... args );

(C++23부터, constexpr since C++26)

재설정(reset)할 인자들을 참조로 포착하는, 템플릿 인자가 추론된 std::out_ptr_t를 돌려줘요. 반환값의 구성(아래 참고)이 ill-formed이면 프로그램은 ill-formed예요.

매개변수

  • s: 적응시킬 객체(보통 스마트 포인터)
  • args: 포착할 재설정 인자들

반환값

std::out_ptr_t<Smart, P, Args&&>(s, std::forward<Args>(args)...)를 돌려줘요. 여기서 P는:

  • Pointervoid가 아니면 Pointer,
  • 아니면 Smart::pointer가 유효하고 타입을 나타내면 그것,
  • 아니면 Smart::element_type*.
std::unique_ptr<T> p;
// 외부 C 함수가 T** 로 출력 포인터를 받아 새 객체를 설정
foo(std::out_ptr(p));   // out_ptr_t 를 생성해 전달

std::inout_ptr와 달리 out_ptr은 기존 소유권을 해제하지 않고 재설정만 하는 경우에 쓰여요. 외부 함수가 소유권을 채워주는 T** 출력 매개변수 패턴을 스마트 포인터에 적응시키는 데 사용해요.

더 알아보기 (Learn more)

cppreference