#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_SPACESHIP_OPERATOR)
// exposition only
-enum class _LIBCPP_ENUM_VIS _EqResult : unsigned char {
- __zero = 0,
- __equal = __zero,
- __equiv = __equal,
- __nonequal = 1,
- __nonequiv = __nonequal
-};
-
enum class _LIBCPP_ENUM_VIS _OrdResult : signed char {
__less = -1,
+ __equiv = 0,
__greater = 1
};
class partial_ordering {
using _ValueT = signed char;
- _LIBCPP_HIDE_FROM_ABI
- explicit constexpr partial_ordering(_EqResult __v) noexcept
- : __value_(_ValueT(__v)) {}
-
_LIBCPP_HIDE_FROM_ABI
explicit constexpr partial_ordering(_OrdResult __v) noexcept
: __value_(_ValueT(__v)) {}
};
inline constexpr partial_ordering partial_ordering::less(_OrdResult::__less);
-inline constexpr partial_ordering partial_ordering::equivalent(_EqResult::__equiv);
+inline constexpr partial_ordering partial_ordering::equivalent(_OrdResult::__equiv);
inline constexpr partial_ordering partial_ordering::greater(_OrdResult::__greater);
inline constexpr partial_ordering partial_ordering::unordered(_NCmpResult ::__unordered);
class weak_ordering {
using _ValueT = signed char;
- _LIBCPP_HIDE_FROM_ABI
- explicit constexpr weak_ordering(_EqResult __v) noexcept : __value_(_ValueT(__v)) {}
_LIBCPP_HIDE_FROM_ABI
explicit constexpr weak_ordering(_OrdResult __v) noexcept : __value_(_ValueT(__v)) {}
};
inline constexpr weak_ordering weak_ordering::less(_OrdResult::__less);
-inline constexpr weak_ordering weak_ordering::equivalent(_EqResult::__equiv);
+inline constexpr weak_ordering weak_ordering::equivalent(_OrdResult::__equiv);
inline constexpr weak_ordering weak_ordering::greater(_OrdResult::__greater);
class strong_ordering {
using _ValueT = signed char;
- _LIBCPP_HIDE_FROM_ABI
- explicit constexpr strong_ordering(_EqResult __v) noexcept : __value_(_ValueT(__v)) {}
_LIBCPP_HIDE_FROM_ABI
explicit constexpr strong_ordering(_OrdResult __v) noexcept : __value_(_ValueT(__v)) {}
};
inline constexpr strong_ordering strong_ordering::less(_OrdResult::__less);
-inline constexpr strong_ordering strong_ordering::equal(_EqResult::__equal);
-inline constexpr strong_ordering strong_ordering::equivalent(_EqResult::__equiv);
+inline constexpr strong_ordering strong_ordering::equal(_OrdResult::__equiv);
+inline constexpr strong_ordering strong_ordering::equivalent(_OrdResult::__equiv);
inline constexpr strong_ordering strong_ordering::greater(_OrdResult::__greater);
// named comparison functions