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.
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.
 | 
Contents | 
[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)  | 
|
|    (destructor) 
(implicitly declared) 
 | 
  destructs an observer_ptr (public member function)  | 
|    operator= 
(implicitly declared) 
 | 
   implicitly declared copy and move assignment operators that assign the stored pointer   (public member function)  | 
 Modifiers | 
|
|    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)  | 
|
 Observers | 
|
|    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)  | 
|
 Conversions | 
|
|    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
| This section is incomplete Reason: no example  |