constexpr atomic() noexcept;
constexpr atomic(weak_ptr<T> desired) noexcept;
constexpr void store(weak_ptr<T> desired, memory_order order = memory_order::seq_cst) noexcept;
constexpr void operator=(weak_ptr<T> desired) noexcept;
constexpr weak_ptr<T> load(memory_order order = memory_order::seq_cst) const noexcept;
constexpr operator weak_ptr<T>() const noexcept;
constexpr weak_ptr<T> exchange(weak_ptr<T> desired,
memory_order order = memory_order::seq_cst) noexcept;
constexpr bool compare_exchange_weak(weak_ptr<T>& expected, weak_ptr<T> desired,
memory_order success, memory_order failure) noexcept;
constexpr bool compare_exchange_strong(weak_ptr<T>& expected, weak_ptr<T> desired,
memory_order success, memory_order failure) noexcept;
constexpr bool compare_exchange_weak(weak_ptr<T>& expected, weak_ptr<T> desired,
memory_order order = memory_order::seq_cst) noexcept;
constexpr bool compare_exchange_strong(weak_ptr<T>& expected, weak_ptr<T> desired,
memory_order order = memory_order::seq_cst) noexcept;
constexpr void wait(weak_ptr<T> old, memory_order order = memory_order::seq_cst) const noexcept;
constexpr void notify_one() noexcept;
constexpr void notify_all() noexcept;