NAME

operator==,!=,<,<=,>,>=(std::unique_ptr) - operator==,!=,<,<=,>,>=(std::unique_ptr)

Synopsis


template<class T1, class D1, class T2, class D2> (1) (since C++11)
bool operator==(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
template<class T1, class D1, class T2, class D2> (2) (since C++11)
bool operator!=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
template<class T1, class D1, class T2, class D2> (3) (since C++11)
bool operator<(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
template<class T1, class D1, class T2, class D2> (4) (since C++11)
bool operator<=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
template<class T1, class D1, class T2, class D2> (5) (since C++11)
bool operator>(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
template<class T1, class D1, class T2, class D2> (6) (since C++11)
bool operator>=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
template <class T, class D> (7) (since C++11)
bool operator==(const unique_ptr<T, D>& x, nullptr_t) noexcept;
template <class T, class D> (8) (since C++11)
bool operator==(nullptr_t, const unique_ptr<T, D>& x) noexcept;
template <class T, class D> (9) (since C++11)
bool operator!=(const unique_ptr<T, D>& x, nullptr_t) noexcept;
template <class T, class D> (10) (since C++11)
bool operator!=(nullptr_t, const unique_ptr<T, D>& x) noexcept;
template <class T, class D> (11) (since C++11)
bool operator<(const unique_ptr<T, D>& x, nullptr_t);
template <class T, class D> (12) (since C++11)
bool operator<(nullptr_t, const unique_ptr<T, D>& y);
template <class T, class D> (13) (since C++11)
bool operator<=(const unique_ptr<T, D>& x, nullptr_t);
template <class T, class D> (14) (since C++11)
bool operator<=(nullptr_t, const unique_ptr<T, D>& y);
template <class T, class D> (15) (since C++11)
bool operator>(const unique_ptr<T, D>& x, nullptr_t);
template <class T, class D> (16) (since C++11)
bool operator>(nullptr_t, const unique_ptr<T, D>& y);
template <class T, class D> (17) (since C++11)
bool operator>=(const unique_ptr<T, D>& x, nullptr_t);
template <class T, class D> (18) (since C++11)
bool operator>=(nullptr_t, const unique_ptr<T, D>& y);


Compares the pointer values of two unique_ptrs, or a unique_ptr and nullptr.
1-6) Compares two unique_ptrs
7-18) Compares a unique_ptr and nullptr.

Parameters


x, y - unique_ptrs to compare

Return value


1) x.get() == y.get()
2) x.get() != y.get()
3) std::less<CT>()(x.get(), y.get()), where CT is std::common_type<unique_ptr<T1, D1>::pointer, unique_ptr<T2, D2>::pointer>::type
4) !(y < x)
5) y < x
6) !(x < y)
7-8) !x
9-10) (bool)x
11) std::less<unique_ptr<T,D>::pointer>()(x.get(), nullptr)
12) std::less<unique_ptr<T,D>::pointer>()(nullptr, y.get())
13) !(nullptr < x)
14) !(y < nullptr)
15) nullptr < x
16) y < nullptr
17) !(x < nullptr)
18) !(nullptr < y)

Example


// Run this code


  #include <iostream>
  #include <memory>


  int main()
  {
      std::unique_ptr<int> p1(new int(42));
      std::unique_ptr<int> p2(new int(42));


      std::cout << "p1 == p1: " << (p1 == p1) << '\n';


      // p1 and p2 point to different memory locations, so p1 != p2
      std::cout << "p1 == p2: " << (p1 == p2) << '\n';
  }

Output:


  p1 == p1: 1
  p1 == p2: 0

See also


    returns a pointer to the managed object
get (public member function)