Namespaces
Variants

std::experimental:: observer_ptr

From cppreference.net
헤더 파일에 정의됨 <experimental/memory>
template < class W >
class observer_ptr ;
(라이브러리 fundamentals TS v2)

std::experimental::observer_ptr 는 비소유 포인터, 즉 관찰자(observer) 입니다. 관찰자는 두 번째 객체에 대한 포인터를 저장하며, 이 객체를 관찰 대상 객체(watched object) 라고 합니다. observer_ptr 은 관찰 대상 객체가 없을 수도 있습니다.

관찰자는 관찰 대상 객체에 대해 어떤 식으로도 책임을 지지 않습니다. 관찰자와 그것이 관찰하는 객체 사이에는 본질적인 관계가 존재하지 않습니다.

이는 원시 포인터 타입을 거의 대체할 수 있도록 설계되었으며, 어휘 타입으로서 코드 독해자가 상세한 분석 없이도 의도된 사용법을 파악할 수 있다는 장점이 있습니다.

observer_ptr 의 특수화는 CopyConstructible CopyAssignable 요구 사항을 충족합니다.

타입 요구사항
-
W 는 참조 타입이 아니어야 하지만, 불완전 타입일 수 있습니다.

목차

멤버 타입

멤버 타입 정의
element_type W , 이 observer_ptr 가 관찰하는 객체의 타입

멤버 함수

새로운 observer_ptr 를 생성함
(public member function)
(destructor)
(implicitly declared)
observer_ptr 를 파괴함
(public member function)
operator=
(implicitly declared)
저장된 포인터를 할당하는 암시적으로 선언된 복사 및 이동 할당 연산자
(public member function)
수정자
감시 중인 객체에 대한 포인터를 반환하고 객체 감시를 중지함
(public member function)
감시 중인 객체를 교체함
(public member function)
감시 중인 객체들을 교환함
(public member function)
관찰자
감시 중인 객체에 대한 포인터를 반환함
(public member function)
연관된 감시 객체가 있는지 확인함
(public member function)
감시 중인 객체에 대한 포인터를 역참조함
(public member function)
변환
저장된 포인터로의 명시적 변환 함수
(public member function)

비멤버 함수

객체를 관찰하는 observer_ptr 을 생성합니다
(함수 템플릿)
다른 observer_ptr 또는 nullptr 와 비교합니다
(함수 템플릿)
swap 알고리즘을 특수화합니다
(함수 템플릿)

헬퍼 클래스

observer_ptr 에 대한 해시 지원
(클래스 템플릿 특수화)

예제