libstdc++: Simplify construction of comparison category types
authorJonathan Wakely <jwakely@redhat.com>
Fri, 24 Jan 2020 17:07:01 +0000 (17:07 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Fri, 24 Jan 2020 17:17:16 +0000 (17:17 +0000)
The _Eq and _Ord enumerations can be combined into one, reducing the
number of constructors needed for the comparison category types. The
redundant equal enumerator can be removed and equivalent used in its
place. The _Less and _Greater enumerators can be renamed because 'less'
and 'greater' are already reserved names anyway.

* libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
(__cmp_cat::_Ord::equivalent): Add enumerator.
(__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
and greater.
(partial_ordering, weak_ordering, strong_ordering): Remove
constructors taking __cmp_cat::_Eq parameters. Use renamed
enumerators.

libstdc++-v3/ChangeLog
libstdc++-v3/libsupc++/compare

index 2e96d56c12cc1e55686996441df98e757c88184c..0067e581acb83a05638464150b9519d27f969ad3 100644 (file)
@@ -1,3 +1,13 @@
+2020-01-24  Jonathan Wakely  <jwakely@redhat.com>
+
+       * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
+       (__cmp_cat::_Ord::equivalent): Add enumerator.
+       (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
+       and greater.
+       (partial_ordering, weak_ordering, strong_ordering): Remove
+       constructors taking __cmp_cat::_Eq parameters. Use renamed
+       enumerators.
+
 2020-01-24  Maciej W. Rozycki  <macro@wdc.com>
 
        * acinclude.m4: Handle `--with-toolexeclibdir='.
index 98a592cbb14078fc2468634449f899a9d26315e4..117340ff1843fdd4749cb9672869da72961f798a 100644 (file)
@@ -48,10 +48,7 @@ namespace std
 
   namespace __cmp_cat
   {
-    enum class _Eq
-    { equal = 0, equivalent = equal, nonequal = 1, nonequivalent = nonequal };
-
-    enum class _Ord { _Less = -1, _Greater = 1 };
+    enum class _Ord { equivalent = 0, less = -1, greater = 1 };
 
     enum class _Ncmp { _Unordered = -127 };
 
@@ -66,11 +63,6 @@ namespace std
     int _M_value;
     bool _M_is_ordered;
 
-    constexpr explicit
-    partial_ordering(__cmp_cat::_Eq __v) noexcept
-    : _M_value(int(__v)), _M_is_ordered(true)
-    { }
-
     constexpr explicit
     partial_ordering(__cmp_cat::_Ord __v) noexcept
     : _M_value(int(__v)), _M_is_ordered(true)
@@ -146,13 +138,13 @@ namespace std
 
   // valid values' definitions
   inline constexpr partial_ordering
-  partial_ordering::less(__cmp_cat::_Ord::_Less);
+  partial_ordering::less(__cmp_cat::_Ord::less);
 
   inline constexpr partial_ordering
-  partial_ordering::equivalent(__cmp_cat::_Eq::equivalent);
+  partial_ordering::equivalent(__cmp_cat::_Ord::equivalent);
 
   inline constexpr partial_ordering
-  partial_ordering::greater(__cmp_cat::_Ord::_Greater);
+  partial_ordering::greater(__cmp_cat::_Ord::greater);
 
   inline constexpr partial_ordering
   partial_ordering::unordered(__cmp_cat::_Ncmp::_Unordered);
@@ -161,10 +153,6 @@ namespace std
   {
     int _M_value;
 
-    constexpr explicit
-    weak_ordering(__cmp_cat::_Eq __v) noexcept : _M_value(int(__v))
-    { }
-
     constexpr explicit
     weak_ordering(__cmp_cat::_Ord __v) noexcept : _M_value(int(__v))
     { }
@@ -243,23 +231,18 @@ namespace std
 
   // valid values' definitions
   inline constexpr weak_ordering
-  weak_ordering::less(__cmp_cat::_Ord::_Less);
+  weak_ordering::less(__cmp_cat::_Ord::less);
 
   inline constexpr weak_ordering
-  weak_ordering::equivalent(__cmp_cat::_Eq::equivalent);
+  weak_ordering::equivalent(__cmp_cat::_Ord::equivalent);
 
   inline constexpr weak_ordering
-  weak_ordering::greater(__cmp_cat::_Ord::_Greater);
+  weak_ordering::greater(__cmp_cat::_Ord::greater);
 
   class strong_ordering
   {
     int _M_value;
 
-    constexpr explicit
-    strong_ordering(__cmp_cat::_Eq __v) noexcept
-    : _M_value(int(__v))
-    { }
-
     constexpr explicit
     strong_ordering(__cmp_cat::_Ord __v) noexcept
     : _M_value(int(__v))
@@ -350,16 +333,16 @@ namespace std
 
   // valid values' definitions
   inline constexpr strong_ordering
-  strong_ordering::less(__cmp_cat::_Ord::_Less);
+  strong_ordering::less(__cmp_cat::_Ord::less);
 
   inline constexpr strong_ordering
-  strong_ordering::equal(__cmp_cat::_Eq::equal);
+  strong_ordering::equal(__cmp_cat::_Ord::equivalent);
 
   inline constexpr strong_ordering
-  strong_ordering::equivalent(__cmp_cat::_Eq::equivalent);
+  strong_ordering::equivalent(__cmp_cat::_Ord::equivalent);
 
   inline constexpr strong_ordering
-  strong_ordering::greater(__cmp_cat::_Ord::_Greater);
+  strong_ordering::greater(__cmp_cat::_Ord::greater);
 
 
   // named comparison functions