29 -> decltype(std::declval<
bool (&)(
bool)>()(_this == that)) {
43 -> decltype(std::declval<
bool (&)(
bool)>()(_this < that)) {
55 template <
class I1,
class I2>
57 std::is_same<std::decay_t<I1>, std::decay_t<I2>>,
58 std::is_base_of<poly::IEqualityComparable, std::decay_t<I1>>>;
60 template <
class I1,
class I2>
62 std::is_same<std::decay_t<I1>, std::decay_t<I2>>,
63 std::is_base_of<poly::IStrictlyOrderable, std::decay_t<I1>>>;
79 return ::folly::poly_call<0, poly::IEqualityComparable>(_this, that);
85 std::enable_if_t<detail::Comparable<I1, I2>::value,
int> = 0>
87 return !(_this == that);
94 bool operator<(Poly<I1>
const& _this,
Poly<I2> const& that) {
102 return ::folly::poly_call<0, poly::IStrictlyOrderable>(_this, that);
108 std::enable_if_t<detail::Orderable<I1, I2>::value,
int> = 0>
116 std::enable_if_t<detail::Orderable<I1, I2>::value,
int> = 0>
117 bool operator<=(Poly<I1>
const& _this,
Poly<I2> const& that) {
118 return !(that < _this);
124 std::enable_if_t<detail::Orderable<I1, I2>::value,
int> = 0>
126 return !(_this < that);
134 template <
class Base>
bool operator>(const Expected< Value, Error > &lhs, const Expected< Value, Error > &rhs)
FOLLY_POLY_MEMBERS(&isLess_< T >) Members
std::type_info const & poly_type(detail::PolyRoot< I > const &that) noexcept
#define FOLLY_POLY_MEMBERS(...)
static auto isEqual_(T const &_this, T const &that) -> decltype(std::declval< bool(&)(bool)>()(_this==that))
—— Concurrent Priority Queue Implementation ——
bool operator!=(const Unexpected< Error > &lhs, const Unexpected< Error > &rhs)
static auto isLess_(T const &_this, T const &that) -> decltype(std::declval< bool(&)(bool)>()(_this< that))
AtomicCounter< T, DeterministicAtomic > Base
bool poly_empty(detail::PolyRoot< I > const &that) noexcept
static const char *const value
bool operator>=(const Expected< Value, Error > &lhs, const Expected< Value, Error > &rhs)
FOLLY_POLY_MEMBERS(&isEqual_< T >) Members
bool operator==(const Unexpected< Error > &lhs, const Unexpected< Error > &rhs)