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. 
[edit] Member functions
| constructs an atomic_weak_ptrobject(public member function) | |
| stores a value into an atomic_weak_ptrobject(public member function) | |
| checks if the atomic_weak_ptrobject 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) | 


