std::experimental::atomic_weak_ptr
From cppreference.com
                    
                                        
                    < cpp | experimental
                    
                                                            
                    |   Defined in header  <experimental/atomic>
  | 
||
|   template < class T > class atomic_weak_ptr;  | 
(concurrency TS) | |
The class template atomic_weak_ptr provides thread-safe atomic pointer operations over a std::weak_ptr. 
Member functions
  constructs an atomic_weak_ptr object (public member function)  | |
   stores a value into an atomic_weak_ptr object (public member function)  | |
   checks if the atomic_weak_ptr object is lock-free (public member function)  | |
|    atomically replaces the value of the atomic object with a non-atomic argument   (public member function)  | |
|    atomically obtains the value of the atomic object   (public member function)  | |
|    loads a value from an atomic object   (public member function)  | |
|    atomically replaces the value of the atomic object and obtains the value held previously  (public member function)  | |
|    atomically compares the value of the atomic object with non-atomic argument and performs atomic exchange if equal or atomic load if not   (public member function)  |