template<class T, class U> constexpr bool operator==(const shared_ptr<T>& a, const shared_ptr<U>& b) noexcept;
template<class T> constexpr bool operator==(const shared_ptr<T>& a, nullptr_t) noexcept;
template<class T, class U> constexpr strong_ordering operator<=>(const shared_ptr<T>& a, const shared_ptr<U>& b) noexcept;
template<class T> constexpr strong_ordering operator<=>(const shared_ptr<T>& a, nullptr_t) noexcept;