Defined in header <experimental/memory>
template< class W >
class observer_ptr;
(library fundamentals TS v2)

std::experimental::observer_ptr is a non-owning pointer, or observer. The observer stores a pointer to a second object, known as the watched object. An observer_ptr may also have no watched object.

An observer is not responsible in any way for the watched object; there is no inherent relationship between an observer and the object it watches.

Specializations of observer_ptr satisfy the requirements of CopyConstructible and CopyAssignable.

Type requirements
W shall not be a reference type, but may be an incomplete type.


[edit] Member types

Member type Definition
element_type W, the type of the object watched by this observer_ptr
pointer std::add_pointer_t<W>. For exposition only.

[edit] Member functions

constructs a new observer_ptr
(public member function)
(implicitly declared)
destructs an observer_ptr
(public member function)
(implicitly declared)
implicitly declared copy and move assignment operators that assign the stored pointer
(public member function)
returns a pointer to the watched object and stops watching the object
(public member function)
replaces the watched object
(public member function)
swaps the watched objects
(public member function)
returns a pointer to the watched object
(public member function)
checks if there is an associated watched object
(public member function)
dereferences pointer to the watched object
(public member function)
explicit conversion function to the stored pointer
(public member function)

[edit] Non-member functions

creates a observer_ptr that watches an object
(function template)
compares to another observer_ptr or with nullptr
(function template)
specializes the swap algorithm
(function template)

[edit] Helper classes

hash support for observer_ptr
(class template specialization)

[edit] Example