std::experimental::observer_ptr::observer_ptr
From cppreference.com
                    
                                        
                    < cpp | experimental | observer ptr
                    
                                                            
                    | constexpr observer_ptr(); constexpr observer_ptr( nullptr_t ); | (1) | (library fundamentals TS v2) | 
| explicit observer_ptr( std::add_pointer_t<W> p ); | (2) | (library fundamentals TS v2) | 
| template<class W2> observer_ptr( observer_ptr<W2> other ); | (3) | (library fundamentals TS v2) | 
| observer_ptr( const observer_ptr& other ) = default; | (4) | (library fundamentals TS v2) (implicitly declared) | 
| observer_ptr( observer_ptr&& other ) = default; | (5) | (library fundamentals TS v2) (implicitly declared) | 
1) Constructs an 
observer_ptr that has no corresponding watched object.
2) Constructs an 
observer_ptr that watches p.
3) Constructs an 
observer_ptr that watches other.get(). This constructor does not participate in overload resolution unless W2* is convertible to W*.
4-5) Implicitly declared copy and move constructors. Constructs an 
observer_ptr that watches other.get().[edit] Parameters
| p | - | a pointer to an object to watch | 
| other | - | another observer_ptrto copy from | 
[edit] Exceptions
noexcept specification:  
noexcept