operator==,!=,<,<=,>,>=(std::experimental::propagate_const)

From cppreference.com
template <class T>
constexpr bool operator==(const propagate_const<T>& pt, nullptr_t);
(1) (library fundamentals TS v2)
template <class T>
constexpr bool operator==(nullptr_t, const propagate_const<T>& pt);
(2) (library fundamentals TS v2)
template <class T>
constexpr bool operator!=(const propagate_const<T>& pt, nullptr_t);
(3) (library fundamentals TS v2)
template <class T>
constexpr bool operator!=(nullptr_t, const propagate_const<T>& pt);
(4) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator==(const propagate_const<T>& pt, const propagate_const<U>& pu);
(5) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator!=(const propagate_const<T>& pt, const propagate_const<U>& pu);
(6) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator<(const propagate_const<T>& pt, const propagate_const<U>& pu);
(7) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator>(const propagate_const<T>& pt, const propagate_const<U>& pu);
(8) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator<=(const propagate_const<T>& pt, const propagate_const<U>& pu);
(9) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator>=(const propagate_const<T>& pt, const propagate_const<U>& pu);
(10) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator==(const propagate_const<T>& pt, const U& u);
(11) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator!=(const propagate_const<T>& pt, const U& u);
(12) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator<(const propagate_const<T>& pt, const U& u);
(13) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator>(const propagate_const<T>& pt, const U& u);
(14) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator<=(const propagate_const<T>& pt, const U& u);
(15) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator>=(const propagate_const<T>& pt, const U& u);
(16) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator==(const T& t, const propagate_const<U>& pu);
(17) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator!=(const T& t, const propagate_const<U>& pu);
(18) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator<(const T& t, const propagate_const<U>& pu);
(19) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator>(const T& t, const propagate_const<U>& pu);
(20) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator<=(const T& t, const propagate_const<U>& pu);
(21) (library fundamentals TS v2)
template <class T, class U>
constexpr bool operator>=(const T& t, const propagate_const<U>& pu);
(22) (library fundamentals TS v2)

Compares the wrapped pointers of two propagate_consts, or between a propagate_const and nullptr, or between a propagate_const and another object.

1-4) Equality comparison for a propagate_const and nullptr.
5-6) Equality comparison for two propagate_consts
7-10) Ordered comparison for two propagate_consts
11-14) Equality comparison for a propagate_const and another object.
15-22) Equality comparison for a propagate_const and another object.

[edit] Parameters

pt, pu - propagate_consts to compare
t, u - other objects to compare

[edit] Return value

Let t_ denote the underlying pointer-like object wrapped by a propagate_const.

1) pt.t_ == nullptr
2) nullptr == pt.t_
3) pt.t_ != nullptr
4) nullptr != pt.t_
5) pt.t_ == pu.t_
6) pt.t_ != pu.t_
7) pt.t_ < pu.t_
8) pt.t_ > pu.t_
9) pt.t_ <= pu.t_
10) pt.t_ >= pu.t_
11) pt.t_ == u
12) pt.t_ != u
13) pt.t_ < u
14) pt.t_ > u
15) pt.t_ <= u
16) pt.t_ >= u
17) t == pu.t_
18) t != pu.t_
19) t < pu.t_
20) t > pu.t_
21) t <= pu.t_
22) t >= pu.t_