##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::experimental::observer_ptr

From cppreference.com
< cpp‎ | experimental

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.

It is intended as a near drop-in replacement for raw pointer types, with the advantage that, as a vocabulary type, it indicates its intended use without need for detailed analysis by code readers.

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`

### [edit] Member functions

(constructor) | constructs a new `observer_ptr` (public member function) [edit]
(destructor) (implicitly declared) | destructs an `observer_ptr` (public member function) [edit]
operator= (implicitly declared) | implicitly declared copy and move assignment operators that assign the stored pointer (public member function) [edit]
##### Modifiers
release | returns a pointer to the watched object and stops watching the object (public member function) [edit]
reset | replaces the watched object (public member function) [edit]
swap | swaps the watched objects (public member function) [edit]
##### Observers
get | returns a pointer to the watched object (public member function) [edit]
operator bool | checks if there is an associated watched object (public member function) [edit]
operator*operator-> | dereferences pointer to the watched object (public member function) [edit]
##### Conversions
operator element_type* | explicit conversion function to the stored pointer (public member function) [edit]

### [edit] Non-member functions

make_observer | creates a `observer_ptr` that watches an object (function template) [edit]
operator==operator!=operator<operator<=operator>operator>= | compares to another `observer_ptr` or with nullptr (function template) [edit]
std::experimental::swap(std::experimental::observer_ptr) | specializes the `swap` algorithm (function template) [edit]

### [edit] Helper classes

std::hash<std::experimental::observer_ptr> | hash support for `observer_ptr` (class template specialization) [edit]

### [edit] Example

| This section is incomplete Reason: no example

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/experimental/observer_ptr&oldid=85265"
Category:

- Todo no example