libstdc++: Remove redundant inequality operators in <stop_token>
authorJonathan Wakely <jwakely@redhat.com>
Mon, 6 Jan 2020 12:06:47 +0000 (12:06 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Mon, 6 Jan 2020 12:06:47 +0000 (12:06 +0000)
* include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
(stop_source): Likewise (LWG 3362).
* testsuite/30_threads/stop_token/stop_source.cc: Test equality
comparisons.

From-SVN: r279897

libstdc++-v3/ChangeLog
libstdc++-v3/include/std/stop_token
libstdc++-v3/testsuite/30_threads/stop_token/stop_source.cc

index 1fe69c46c75bc85eefa640971448bbcd762ff872..1e46178c999aecbcb5840ed0fa1e4c32cff53fb6 100644 (file)
@@ -1,5 +1,10 @@
 2020-01-06  Jonathan Wakely  <jwakely@redhat.com>
 
+       * include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
+       (stop_source): Likewise (LWG 3362).
+       * testsuite/30_threads/stop_token/stop_source.cc: Test equality
+       comparisons.
+
        * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
        (lexicographical_compare_three_way): Do not depend on
        __cpp_lib_concepts.
index 58f72792b9ee79cbf391d2e74738ae521727d2df..e23d139e66ca3d803c5cc1d853b50d8b5d1f7eab 100644 (file)
@@ -87,16 +87,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     [[nodiscard]]
     friend bool
     operator==(const stop_token& __a, const stop_token& __b)
-    {
-      return __a._M_state == __b._M_state;
-    }
-
-    [[nodiscard]]
-    friend bool
-    operator!=(const stop_token& __a, const stop_token& __b)
-    {
-      return __a._M_state != __b._M_state;
-    }
+    { return __a._M_state == __b._M_state; }
 
     friend void
     swap(stop_token& __lhs, stop_token& __rhs) noexcept
@@ -301,13 +292,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return __a._M_state == __b._M_state;
     }
 
-    [[nodiscard]]
-    friend bool
-    operator!=(const stop_source& __a, const stop_source& __b) noexcept
-    {
-      return __a._M_state != __b._M_state;
-    }
-
     friend void
     swap(stop_source& __lhs, stop_source& __rhs) noexcept
     {
index 707c421ce322f23a8ac497351b25aee5f0d9bedd..9d15f0781ea69a726f91e511087a4e254ad94bde 100644 (file)
@@ -27,12 +27,18 @@ test01()
   std::stop_source ssrc;
   VERIFY( ssrc.stop_possible() );
   VERIFY( !ssrc.stop_requested() );
+  VERIFY( ssrc == ssrc );
+  VERIFY( !(ssrc != ssrc) );
 
   std::stop_source copy(ssrc);
   VERIFY( copy.stop_possible() );
   VERIFY( !copy.stop_requested() );
   VERIFY( ssrc.stop_possible() );
   VERIFY( !ssrc.stop_requested() );
+  VERIFY( copy == ssrc );
+  VERIFY( !(copy != ssrc) );
+  VERIFY( ssrc == ssrc );
+  VERIFY( !(ssrc != ssrc) );
 
   std::stop_source move(std::move(ssrc));
   VERIFY( move.stop_possible() );
@@ -41,6 +47,14 @@ test01()
   VERIFY( !copy.stop_requested() );
   VERIFY( !ssrc.stop_possible() );
   VERIFY( !ssrc.stop_requested() );
+  VERIFY( !(move == ssrc) );
+  VERIFY( move != ssrc );
+  VERIFY( ssrc == ssrc );
+  VERIFY( !(ssrc != ssrc) );
+  VERIFY( move == copy );
+  VERIFY( !(move != copy) );
+  VERIFY( !(copy == ssrc) );
+  VERIFY( copy != ssrc );
 }
 
 void
@@ -52,12 +66,18 @@ test02()
   std::stop_source ssrc(std::nostopstate);
   VERIFY( !ssrc.stop_possible() );
   VERIFY( !ssrc.stop_requested() );
+  VERIFY( ssrc == ssrc );
+  VERIFY( !(ssrc != ssrc) );
 
   std::stop_source copy(ssrc);
   VERIFY( !copy.stop_possible() );
   VERIFY( !copy.stop_requested() );
   VERIFY( !ssrc.stop_possible() );
   VERIFY( !ssrc.stop_requested() );
+  VERIFY( copy == ssrc );
+  VERIFY( !(copy != ssrc) );
+  VERIFY( ssrc == ssrc );
+  VERIFY( !(ssrc != ssrc) );
 
   std::stop_source move(std::move(ssrc));
   VERIFY( !move.stop_possible() );
@@ -66,24 +86,39 @@ test02()
   VERIFY( !copy.stop_requested() );
   VERIFY( !ssrc.stop_possible() );
   VERIFY( !ssrc.stop_requested() );
+  VERIFY( move == ssrc );
+  VERIFY( !(move != ssrc) );
+  VERIFY( ssrc == ssrc );
+  VERIFY( !(ssrc != ssrc) );
+  VERIFY( move == copy );
+  VERIFY( !(move != copy) );
+  VERIFY( copy == ssrc );
+  VERIFY( !(copy != ssrc) );
 }
 
 void
 test03()
 {
   std::stop_source s1;
+  std::stop_source copy(s1);
   s1.request_stop();
   std::stop_source s2(std::nostopstate);
+  VERIFY( s1 != s2 );
+
   s1.swap(s2);
   VERIFY( !s1.stop_possible() );
   VERIFY( !s1.stop_requested() );
   VERIFY( s2.stop_possible() );
   VERIFY( s2.stop_requested() );
+  VERIFY( s1 != s2 );
+  VERIFY( s2 == copy );
+
   swap(s1, s2);
   VERIFY( s1.stop_possible() );
   VERIFY( s1.stop_requested() );
   VERIFY( !s2.stop_possible() );
   VERIFY( !s2.stop_requested() );
+  VERIFY( s1 == copy );
 }
 
 int main()