23 General utilities library [utilities]
template <class T, class D> void swap(unique_ptr<T, D>& x, unique_ptr<T, D>& y) noexcept;
Remarks: This function shall not participate in overload resolution
unless
is_swappable_v<D> is
true. Effects: Calls
x.swap(y). template <class T1, class D1, class T2, class D2>
bool operator==(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
Returns: x.get() == y.get(). template <class T1, class D1, class T2, class D2>
bool operator!=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
Returns: x.get() != y.get(). template <class T1, class D1, class T2, class D2>
bool operator<(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
Requires: Let
CT denote
common_type_t<typename unique_ptr<T1, D1>::pointer,
typename unique_ptr<T2, D2>::pointer>
Then the specialization
less<CT> shall be a function object type (
[function.objects]) that
induces a strict weak ordering (
[alg.sorting]) on the pointer values
. Returns: less<CT>()(x.get(), y.get()). Remarks: If
unique_ptr<T1, D1>::pointer is not implicitly convertible
to
CT or
unique_ptr<T2, D2>::pointer is not implicitly
convertible to
CT, the program is ill-formed
. template <class T1, class D1, class T2, class D2>
bool operator<=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
template <class T1, class D1, class T2, class D2>
bool operator>(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
template <class T1, class D1, class T2, class D2>
bool operator>=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
template <class T, class D>
bool operator==(const unique_ptr<T, D>& x, nullptr_t) noexcept;
template <class T, class D>
bool operator==(nullptr_t, const unique_ptr<T, D>& x) noexcept;
template <class T, class D>
bool operator!=(const unique_ptr<T, D>& x, nullptr_t) noexcept;
template <class T, class D>
bool operator!=(nullptr_t, const unique_ptr<T, D>& x) noexcept;
template <class T, class D>
bool operator<(const unique_ptr<T, D>& x, nullptr_t);
template <class T, class D>
bool operator<(nullptr_t, const unique_ptr<T, D>& x);
Requires: The specialization
less<unique_ptr<T, D>::pointer> shall be
a function object type (
[function.objects]) that induces a strict weak
ordering (
[alg.sorting]) on the pointer values
. Returns:
The first function template returns
less<unique_ptr<T, D>::pointer>()(x.get(),
nullptr). The second function template returns
less<unique_ptr<T, D>::pointer>()(nullptr, x.get()).template <class T, class D>
bool operator>(const unique_ptr<T, D>& x, nullptr_t);
template <class T, class D>
bool operator>(nullptr_t, const unique_ptr<T, D>& x);
Returns:
The first function template returns
nullptr < x. The second function template returns
x < nullptr.template <class T, class D>
bool operator<=(const unique_ptr<T, D>& x, nullptr_t);
template <class T, class D>
bool operator<=(nullptr_t, const unique_ptr<T, D>& x);
Returns:
The first function template returns
!(nullptr < x). The second function template returns
!(x < nullptr).template <class T, class D>
bool operator>=(const unique_ptr<T, D>& x, nullptr_t);
template <class T, class D>
bool operator>=(nullptr_t, const unique_ptr<T, D>& x);
Returns:
The first function template returns
!(x < nullptr). The second function template returns
!(nullptr < x).