]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
shared_ptr.h: Do not swap rvalues.
authorJonathan Wakely <jwakely.gcc@gmail.com>
Tue, 23 Jun 2009 22:33:17 +0000 (22:33 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Tue, 23 Jun 2009 22:33:17 +0000 (23:33 +0100)
2009-06-23  Jonathan Wakely  <jwakely.gcc@gmail.com>

* include/bits/shared_ptr.h: Do not swap rvalues.
* testsuite/20_util/owner_less/cmp.cc: Add missing test variables.
* testsuite/20_util/shared_ptr/comparison/cmp.cc: Likewise.
* testsuite/20_util/shared_ptr/comparison/less.cc: Likewise.
* testsuite/20_util/weak_ptr/observers/owner_before.cc: Likewise.
* testsuite/20_util/tuple/swap.cc: Likewise.

From-SVN: r148880

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/shared_ptr.h
libstdc++-v3/testsuite/20_util/owner_less/cmp.cc
libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc
libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc
libstdc++-v3/testsuite/20_util/tuple/swap.cc
libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc

index a71f9341c983097cc93bba53bf7910ec6cfaad38..1a589dda0da42e7215b9e3caa68db4d259c35fba 100644 (file)
@@ -1,3 +1,12 @@
+2009-06-23  Jonathan Wakely  <jwakely.gcc@gmail.com>
+
+       * include/bits/shared_ptr.h: Do not swap rvalues.
+       * testsuite/20_util/owner_less/cmp.cc: Add missing test variables.
+       * testsuite/20_util/shared_ptr/comparison/cmp.cc: Likewise.
+       * testsuite/20_util/shared_ptr/comparison/less.cc: Likewise.
+       * testsuite/20_util/weak_ptr/observers/owner_before.cc: Likewise.
+       * testsuite/20_util/tuple/swap.cc: Likewise.
+
 2009-06-23  Jonathan Wakely  <jwakely.gcc@gmail.com>
 
        * include/debug/macros.h: Replace @tbd with valid doxygen tag @todo.
index c7a45f39bc1fc02118f681c22382ca74a374c644..81bef58594043697b4e75e561babcb14878e11a2 100644 (file)
@@ -828,7 +828,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
       { return _M_refcount._M_get_use_count(); }
 
       void
-      swap(__shared_ptr<_Tp, _Lp>&& __other) // never throws
+      swap(__shared_ptr<_Tp, _Lp>& __other) // never throws
       {
        std::swap(_M_ptr, __other._M_ptr);
        _M_refcount._M_swap(__other._M_refcount);
@@ -938,16 +938,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b)
     { __a.swap(__b); }
 
-  template<typename _Tp, _Lock_policy _Lp>
-    inline void
-    swap(__shared_ptr<_Tp, _Lp>&& __a, __shared_ptr<_Tp, _Lp>& __b)
-    { __a.swap(__b); }
-
-  template<typename _Tp, _Lock_policy _Lp>
-    inline void
-    swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>&& __b)
-    { __a.swap(__b); }
-
   // 2.2.3.9 shared_ptr casts
   /** @warning The seemingly equivalent
    *           <code>shared_ptr<_Tp, _Lp>(static_cast<_Tp*>(__r.get()))</code>
@@ -1367,16 +1357,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b)
     { __a.swap(__b); }
 
-  template<typename _Tp>
-    inline void
-    swap(shared_ptr<_Tp>&& __a, shared_ptr<_Tp>& __b)
-    { __a.swap(__b); }
-
-  template<typename _Tp>
-    inline void
-    swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>&& __b)
-    { __a.swap(__b); }
-
   // 20.8.13.2.10 shared_ptr casts.
   template<typename _Tp, typename _Tp1>
     inline shared_ptr<_Tp>
index 440ac76a7a1101e2f1de214b2a20b6487eee2247..e1524cc18510d5b917306465a4a785ca29b07576 100644 (file)
@@ -32,16 +32,18 @@ struct B { A a[2]; };
 int
 test01()
 {
-    // test empty shared_ptrs compare equivalent
-    std::owner_less<std::shared_ptr<A>> less;
-    std::owner_less<std::weak_ptr<A>> wless;
-    std::shared_ptr<A> p1;
-    std::shared_ptr<A> p2;
-    VERIFY( !less(p1, p2) && !less(p2, p1) );
-    std::weak_ptr<A> p3;
-    VERIFY( !less(p1, p3) && !less(p3, p1) );
-    VERIFY( !wless(p1, p3) && !wless(p3, p1) );
-    return 0;
+  bool test __attribute__((unused)) = true;
+
+  // test empty shared_ptrs compare equivalent
+  std::owner_less<std::shared_ptr<A>> less;
+  std::owner_less<std::weak_ptr<A>> wless;
+  std::shared_ptr<A> p1;
+  std::shared_ptr<A> p2;
+  VERIFY( !less(p1, p2) && !less(p2, p1) );
+  std::weak_ptr<A> p3;
+  VERIFY( !less(p1, p3) && !less(p3, p1) );
+  VERIFY( !wless(p1, p3) && !wless(p3, p1) );
+  return 0;
 }
 
 
@@ -49,6 +51,8 @@ test01()
 int
 test02()
 {
+  bool test __attribute__((unused)) = true;
+
   std::owner_less<std::shared_ptr<A>> less;
   std::owner_less<std::weak_ptr<A>> wless;
 
@@ -80,6 +84,8 @@ test02()
 int
 test03()
 {
+  bool test __attribute__((unused)) = true;
+
   std::owner_less<std::shared_ptr<A>> less;
   std::owner_less<std::weak_ptr<A>> wless;
 
@@ -102,6 +108,8 @@ test03()
 int
 test04()
 {
+  bool test __attribute__((unused)) = true;
+
   std::owner_less<std::shared_ptr<A>> less;
 
   std::shared_ptr<A> a[3];
index 3e9db75802c667f4be5f2fe0d48e488dfe15cebe..9991fa761bc02d74ac5a819dcbe5dd63bff5d4d2 100644 (file)
@@ -36,13 +36,15 @@ struct B : A
 int
 test01()
 {
-    // test empty shared_ptrs compare equivalent
-    std::shared_ptr<A> p1;
-    std::shared_ptr<B> p2;
-    VERIFY( p1 == p2 );
-    VERIFY( !(p1 != p2) );
-    VERIFY( !(p1 < p2) && !(p2 < p1) );
-    return 0;
+  bool test __attribute__((unused)) = true;
+
+  // test empty shared_ptrs compare equivalent
+  std::shared_ptr<A> p1;
+  std::shared_ptr<B> p2;
+  VERIFY( p1 == p2 );
+  VERIFY( !(p1 != p2) );
+  VERIFY( !(p1 < p2) && !(p2 < p1) );
+  return 0;
 }
 
 
@@ -50,6 +52,8 @@ test01()
 int
 test02()
 {
+  bool test __attribute__((unused)) = true;
+
   std::shared_ptr<A> A_default;
 
   std::shared_ptr<A> A_from_A(new A);
@@ -78,6 +82,8 @@ test02()
 int
 test03()
 {
+  bool test __attribute__((unused)) = true;
+
   std::shared_ptr<A> p1;
 
   // check other operators are defined
index 7f35dbe80d583b3d3556d030d1f64ea3b21a7c75..b51b222a028b19bc69301be14ff64c021eccf2dd 100644 (file)
@@ -41,6 +41,8 @@ namespace std
 int
 test01()
 {
+  bool test __attribute__((unused)) = true;
+
   std::less<std::shared_ptr<A>> less;
   // test empty shared_ptrs compare equivalent
   std::shared_ptr<A> p1;
@@ -55,6 +57,8 @@ test01()
 int
 test02()
 {
+  bool test __attribute__((unused)) = true;
+
   std::less<std::shared_ptr<A>> less;
 
   std::shared_ptr<A> empty;
@@ -77,6 +81,8 @@ test02()
 int
 test03()
 {
+  bool test __attribute__((unused)) = true;
+
   std::less<std::shared_ptr<A>> less;
 
   A a;
index 1e65f0521cbb1d266ae8b99d59e17b0589d14438..6dab446bfe98c4e6af301b52fd1610cd2a888c38 100644 (file)
@@ -56,6 +56,8 @@ make_move_only (int i)
 
 void test01()
 {
+  bool test __attribute__((unused)) = true;
+
   std::tuple<> t1, t2;
   std::swap(t1, t2);
 
index 786e7eb169ec1601b8080fcf70da93873d520b04..1081f93d338979df1fb96e0c48e3c462f07bb004 100644 (file)
@@ -30,6 +30,8 @@ struct B { };
 int
 test01()
 {
+  bool test __attribute__((unused)) = true;
+
   // test empty weak_ptrs compare equivalent
   std::weak_ptr<A> p1;
   std::weak_ptr<B> p2;
@@ -45,6 +47,8 @@ test01()
 int
 test02()
 {
+  bool test __attribute__((unused)) = true;
+
   std::shared_ptr<A> a0;
   std::weak_ptr<A> w0(a0);