]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
stl_deque.h (deque<>::operator=(deque&&)): Implement resolution of DR 675, call clear...
authorPaolo Carlini <pcarlini@suse.de>
Fri, 9 Nov 2007 17:18:10 +0000 (17:18 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Fri, 9 Nov 2007 17:18:10 +0000 (17:18 +0000)
2007-11-09  Paolo Carlini  <pcarlini@suse.de>

* include/bits/stl_deque.h (deque<>::operator=(deque&&)): Implement
resolution of DR 675, call clear first.
* include/bits/stl_list.h (list<>::operator=(list&&)): Likewise.
* include/bits/stl_bvector.h (vector<bool>::operator=(vector&&)):
Likewise.
* include/bits/stl_vector.h (vector<>::operator=(vector&&)): Likewise.
* include/bits/stl_map.h (map<>::operator=(map&&)): Likewise.
* include/bits/stl_multimap.h (multimap<>::operator=(multimap&&)):
Likewise.
* include/bits/stl_multiset.h (multiset<>::operator=(multiset&&)):
Likewise.
* include/bits/stl_set.h (set<>::operator=(set&&)): Likewise.
* include/debug/map.h (map<>::operator=(map&&)): Likewise.
* include/debug/set.h (set<>::operator=(set&&)): Likewise.
* include/debug/multimap.h (multimap<>::operator=(multimap&&)):
Likewise.
* include/debug/multiset.h (multiset<>::operator=(multiset&&)):
Likewise.
* include/debug/deque (deque<>::operator=(deque&&)): Likewise.
* include/debug/list (list<>::operator=(list&&)): Likewise.
* include/debug/vector (vector<>::operator=(vector&&)): Likewise.
* testsuite/23_containers/multimap/moveable.cc: Adjust.
* testsuite/23_containers/multiset/moveable.cc: Likewise.
* testsuite/23_containers/set/moveable.cc: Likewise.
* testsuite/23_containers/map/moveable.cc: Likewise.
* testsuite/20_util/pair/moveable.cc: Likewise.
* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
Adjust dg-error line numbers.
* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
Likewise.
* testsuite/23_containers/deque/requirements/dr438/
constructor_1_neg.cc: Likewise.
* testsuite/23_containers/deque/requirements/dr438/
constructor_2_neg.cc: Likewise.
* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
Likewise.
* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
Likewise.
* testsuite/23_containers/list/requirements/dr438/
constructor_1_neg.cc: Likewise.
* testsuite/23_containers/list/requirements/dr438/
constructor_2_neg.cc: Likewise.
  * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
Likewise.
* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
Likewise.
* testsuite/23_containers/vector/requirements/dr438/
constructor_1_neg.cc: Likewise.
* testsuite/23_containers/vector/requirements/dr438/
constructor_2_neg.cc: Likewise.

From-SVN: r130051

33 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/stl_bvector.h
libstdc++-v3/include/bits/stl_deque.h
libstdc++-v3/include/bits/stl_list.h
libstdc++-v3/include/bits/stl_map.h
libstdc++-v3/include/bits/stl_multimap.h
libstdc++-v3/include/bits/stl_multiset.h
libstdc++-v3/include/bits/stl_set.h
libstdc++-v3/include/bits/stl_vector.h
libstdc++-v3/include/debug/deque
libstdc++-v3/include/debug/list
libstdc++-v3/include/debug/map.h
libstdc++-v3/include/debug/multimap.h
libstdc++-v3/include/debug/multiset.h
libstdc++-v3/include/debug/set.h
libstdc++-v3/include/debug/vector
libstdc++-v3/testsuite/20_util/pair/moveable.cc
libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
libstdc++-v3/testsuite/23_containers/map/moveable.cc
libstdc++-v3/testsuite/23_containers/multimap/moveable.cc
libstdc++-v3/testsuite/23_containers/multiset/moveable.cc
libstdc++-v3/testsuite/23_containers/set/moveable.cc
libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc

index baea4ac38dd627d2c8f2eb71d3cae7d8165ac26d..c07aae4ecb742fcee32c55fdfdd12f2ada2ba11a 100644 (file)
@@ -1,3 +1,56 @@
+2007-11-09  Paolo Carlini  <pcarlini@suse.de>
+
+       * include/bits/stl_deque.h (deque<>::operator=(deque&&)): Implement
+       resolution of DR 675, call clear first.
+       * include/bits/stl_list.h (list<>::operator=(list&&)): Likewise.
+       * include/bits/stl_bvector.h (vector<bool>::operator=(vector&&)):
+       Likewise.
+       * include/bits/stl_vector.h (vector<>::operator=(vector&&)): Likewise.
+       * include/bits/stl_map.h (map<>::operator=(map&&)): Likewise.
+       * include/bits/stl_multimap.h (multimap<>::operator=(multimap&&)):
+       Likewise.
+       * include/bits/stl_multiset.h (multiset<>::operator=(multiset&&)):
+       Likewise.
+       * include/bits/stl_set.h (set<>::operator=(set&&)): Likewise.
+       * include/debug/map.h (map<>::operator=(map&&)): Likewise.
+       * include/debug/set.h (set<>::operator=(set&&)): Likewise.
+       * include/debug/multimap.h (multimap<>::operator=(multimap&&)):
+       Likewise.
+       * include/debug/multiset.h (multiset<>::operator=(multiset&&)):
+       Likewise.
+       * include/debug/deque (deque<>::operator=(deque&&)): Likewise.
+       * include/debug/list (list<>::operator=(list&&)): Likewise. 
+       * include/debug/vector (vector<>::operator=(vector&&)): Likewise.
+       * testsuite/23_containers/multimap/moveable.cc: Adjust.
+       * testsuite/23_containers/multiset/moveable.cc: Likewise.
+       * testsuite/23_containers/set/moveable.cc: Likewise.
+       * testsuite/23_containers/map/moveable.cc: Likewise.
+       * testsuite/20_util/pair/moveable.cc: Likewise.
+       * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+       Adjust dg-error line numbers.
+       * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+       Likewise.
+       * testsuite/23_containers/deque/requirements/dr438/
+       constructor_1_neg.cc: Likewise.
+       * testsuite/23_containers/deque/requirements/dr438/
+       constructor_2_neg.cc: Likewise.
+       * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+       Likewise.
+       * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+       Likewise.
+       * testsuite/23_containers/list/requirements/dr438/
+       constructor_1_neg.cc: Likewise.
+       * testsuite/23_containers/list/requirements/dr438/
+       constructor_2_neg.cc: Likewise.
+       * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+       Likewise.
+       * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+       Likewise.
+       * testsuite/23_containers/vector/requirements/dr438/
+       constructor_1_neg.cc: Likewise.
+       * testsuite/23_containers/vector/requirements/dr438/
+       constructor_2_neg.cc: Likewise.
+
 2007-11-09  Paolo Carlini  <pcarlini@suse.de>
 
        PR libstdc++/34032
index cb99b2202b556ff903470e646bf00549798a6d32..255e00b793c7e9fa16d479af0874dd8cc0eb6275 100644 (file)
@@ -560,7 +560,9 @@ template<typename _Alloc>
 #ifdef __GXX_EXPERIMENTAL_CXX0X__
     vector&
     operator=(vector&& __x)
-    { 
+    {
+      // NB: DR 675.
+      this->clear();
       this->swap(__x); 
       return *this;
     }
index 356cff23ee354f15ff9695c3423cb2cfae6688b6..ae01eae4daeb3d7272649e171c98887afd05045c 100644 (file)
@@ -808,6 +808,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       deque&
       operator=(deque&& __x)
       {
+       // NB: DR 675.
+       this->clear();
        this->swap(__x); 
        return *this;
       }
index 4de31d814b21d55833a412edd0fcbbd9e1c3a475..41b84f357f4ae97c00bca548e14753406bac88cf 100644 (file)
@@ -582,6 +582,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       list&
       operator=(list&& __x)
       {
+       // NB: DR 675.
+       this->clear();
        this->swap(__x); 
        return *this;
       }
index bc9d13beb198862a69ffa60b11b85c091f167650..64264405cb1e01ddb641eff8b2815faa8ae14848 100644 (file)
@@ -255,6 +255,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       map&
       operator=(map&& __x)
       {
+       // NB: DR 675.
+       this->clear();
        this->swap(__x); 
        return *this;
       }
index a2806925c5f45eb50fccbe0679c261fc65a239ce..76d6b4797f2555d879b9e00778d9c009b7ab177f 100644 (file)
@@ -253,6 +253,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       multimap&
       operator=(multimap&& __x)
       {
+       // NB: DR 675.
+       this->clear();
        this->swap(__x); 
        return *this;
       }
index 60d4d9cded63edffaf24c8c7542b96d9d8394fdd..5c897bdcc34010e9fac4096a8c8fc635e4615663 100644 (file)
@@ -225,6 +225,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       multiset&
       operator=(multiset&& __x)
       {
+       // NB: DR 675.
+       this->clear();
        this->swap(__x); 
        return *this;
       }
index d26015677d3390de7a870ce3880475a59c1b469a..3eb4b26962acf6e638dd8b8ae8c46edabb0c7432 100644 (file)
@@ -232,6 +232,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       set&
       operator=(set&& __x)
       {
+       // NB: DR 675.
+       this->clear();
        this->swap(__x); 
        return *this;
       }
index bf2cc277ad665b9505972909e5c8dcd7fb48823d..0e5e6c1da662779fd7aa1a2d9d5d4912cf7d77b7 100644 (file)
@@ -325,7 +325,9 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
        */
       vector&
       operator=(vector&& __x)
-      { 
+      {
+       // NB: DR 675.
+       this->clear();
        this->swap(__x); 
        return *this;
       }
index 6571d151b1a991af3a9ca2210ca2f09d9f8ceea9..8d3bf83f415e8f7ab9f0d8775ff182612c1b569d 100644 (file)
@@ -110,6 +110,8 @@ namespace __debug
       deque&
       operator=(deque&& __x)
       {
+        // NB: DR 675.
+       clear();
        swap(__x);        
        return *this;
       }
index 717433471cb8a4e6eea10f5e85c85657b8b759f7..9e78fc94c523c032ac6972f865551676906b3c08 100644 (file)
@@ -139,6 +139,8 @@ namespace __debug
       list&
       operator=(list&& __x)
       {
+        // NB: DR 675.
+       clear();
        swap(__x);
        return *this;
       }
index 671e1f8365e518097b950e6a3f0015297fa34c5b..16575644da2fa7f07c34c87cd26b51f9edc693e4 100644 (file)
@@ -114,6 +114,8 @@ namespace __debug
       map&
       operator=(map&& __x)
       {
+        // NB: DR 675.
+       clear();
        swap(__x);
        return *this;
       }
index 1dd4de81df1a093e19b74f335b40c5cd7cf07ccc..72f4411685b071d129052296ab26efc960e3be1c 100644 (file)
@@ -115,6 +115,8 @@ namespace __debug
       multimap&
       operator=(multimap&& __x)
       {
+        // NB: DR 675.
+       clear();
        swap(__x);
        return *this;
       }
index 7c58db17b5cc9d7b1af7f62639703eb99ed4f9e0..ffe5b51548f9ad3e1e3e37048ea6408d99e67721 100644 (file)
@@ -112,6 +112,8 @@ namespace __debug
       multiset&
       operator=(multiset&& __x)
       {
+        // NB: DR 675.
+       clear();
        swap(__x);
        return *this;
       }
index bebc34c0083a177cdc0a49c84cfe805de657f390..3115610d1e12dd8557c1d138cb4baf5eb60b2acb 100644 (file)
@@ -112,6 +112,8 @@ namespace __debug
       set&
       operator=(set&& __x)
       {
+        // NB: DR 675.
+       clear();
        swap(__x);
        return *this;
       }
index c5e4d12e02f978727d9ff34b4df10103ccc0745f..8890ab996be2a7452f4a6cb42cd2f1ec70fefd9d 100644 (file)
@@ -123,6 +123,8 @@ namespace __debug
       vector&
       operator=(vector&& __x)
       {
+        // NB: DR 675.
+       clear();
        swap(__x);
        return *this;
       }
index e84321040ea6c565b4e3386f8ec80e3611b6f3f6..cd5de4162eb3608ebc4a70014701f1a1e1fb3283 100644 (file)
@@ -58,7 +58,7 @@ test2()
   std::pair<int, std::vector<int> > q = make_pair(2,w);
   p = std::move(q);
   VERIFY(p.first == 2 && q.first == 2 &&
-        p.second.size() == 2 && q.second.size() == 1);
+        p.second.size() == 2 && q.second.size() == 0);
   std::pair<int, std::vector<int> > r(std::move(p));
   VERIFY(r.first == 2 && p.first == 2 &&
          r.second.size() == 2 && p.second.size() == 0);
index 12c510a7e32c2e12dd849439ee31edb536f26a8f..929045f040fd3743960346f449903ea8b6fbbe9c 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1400 }
+// { dg-error "no matching" "" { target *-*-* } 1402 }
 // { dg-excess-errors "" }
 
 #include <deque>
index 49c1cfde929c9bc9327db7e255a6e7bb27106d67..f133b865a7f6ca442a8999eb405089614cd5bcea 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1335 }
+// { dg-error "no matching" "" { target *-*-* } 1337 }
 // { dg-excess-errors "" }
 
 #include <deque>
index 58042e12d350f9b4b6e6faaf671d0c710b8e5383..a60f922cf311a2fbb11c79a1f33a5c4587bc96ac 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1335 }
+// { dg-error "no matching" "" { target *-*-* } 1337 }
 // { dg-excess-errors "" }
 
 #include <deque>
index 2d003333e337dc91c1ed486c9b0fd35f4fc56e18..9b8258db5ea67bd2da9d850a4e617ec2c5c52084 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1480 }
+// { dg-error "no matching" "" { target *-*-* } 1482 }
 // { dg-excess-errors "" }
 
 #include <deque>
index 187b7510b4feb2b24c0d61a71d6463398c1cf6bc..9655db046a8c0fc633ca563e4ffd92fa03cc65aa 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1234 }
+// { dg-error "no matching" "" { target *-*-* } 1236 }
 // { dg-excess-errors "" }
 
 #include <list>
index 843cb46377232a2d48344d2b11cccfe593e699ef..7899588295506db970e80c86bf8afb5a238a68d0 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1203 }
+// { dg-error "no matching" "" { target *-*-* } 1205 }
 // { dg-excess-errors "" }
 
 #include <list>
index 56a80566c906f550152ba0051729c81884d58625..1624cf83bca2a7f19b4b66082dd24ff9d881143e 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1203 }
+// { dg-error "no matching" "" { target *-*-* } 1205 }
 // { dg-excess-errors "" }
 
 #include <list>
index 8c2014dc6df068aa7d6afcbc3763a8d9e4f6c67e..fddbdacf698c5a4545cbe7c859c77b10b58e7bbb 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1203 }
+// { dg-error "no matching" "" { target *-*-* } 1205 }
 // { dg-excess-errors "" }
 
 #include <list>
index 52447083b2ebf6ff1eb3fc405be5c795f2581aad..c3ab6b0a69b50d8946a6a10a8802f260bcb349ba 100644 (file)
@@ -43,7 +43,7 @@ int main()
   a[2]=0;
   b[1]=0;
   b = std::move(a);
-  VERIFY(b.find(2) != b.end() && a.find(1) != a.end());
+  VERIFY(b.find(2) != b.end() && a.find(1) == a.end());
 
   std::map<int, int> c(std::move(b));
   VERIFY( c.find(2) != c.end());
index 87796f496f38c9ec2bdf94f247ed5e4fd7a99158..f3921a39bb558eec9aa590b3e021b02ac48d7669 100644 (file)
@@ -43,7 +43,7 @@ int main()
   a.insert(std::make_pair(2,0));
   b.insert(std::make_pair(1,0));
   b = std::move(a);
-  VERIFY(b.find(2) != b.end() && a.find(1) != a.end());
+  VERIFY(b.find(2) != b.end() && a.find(1) == a.end());
 
   std::multimap<int, int> c(std::move(b));
   VERIFY( c.find(2) != c.end());
index c3ca111804d095d4a61df817f0cc914ffe9d29e5..a326cebb157b5f9e95a0afe7b311c18bd6dacedc 100644 (file)
@@ -43,7 +43,7 @@ int main()
   a.insert(2);
   b.insert(1);
   b = std::move(a);
-  VERIFY(b.find(2) != b.end() && a.find(1) != a.end());
+  VERIFY(b.find(2) != b.end() && a.find(1) == a.end());
 
   std::multiset<int> c(std::move(b));
   VERIFY( c.find(2) != c.end());
index b85ae58ba06d47429db8d7e021375a640db5df59..8bfc2d2729049d0d774867150f16d59f2a25264d 100644 (file)
@@ -43,7 +43,7 @@ int main()
   a.insert(2);
   b.insert(1);
   b = std::move(a);
-  VERIFY(b.find(2) != b.end() && a.find(1) != a.end());
+  VERIFY(b.find(2) != b.end() && a.find(1) == a.end());
 
   std::set<int> c(std::move(b));
   VERIFY( c.find(2) != c.end());
index 6e7d587300bccc4a2764c1d0510c6bb9417e38d6..beae46deb5911e694a4168445c9f3b4c4caba0ba 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 995 }
+// { dg-error "no matching" "" { target *-*-* } 997 }
 // { dg-excess-errors "" }
 
 #include <vector>
index 532d89aea34d1ce0a96a807f146affce9d12b3cb..47023c595ca800b8d335ea377903234a4c1ff282 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 935 }
+// { dg-error "no matching" "" { target *-*-* } 937 }
 // { dg-excess-errors "" }
 
 #include <vector>
index 640aa798592eaeddb8799daf7a0abb4aa9d792b1..462058c53c68139df1a1a8de879d0616ada0a380 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 935 }
+// { dg-error "no matching" "" { target *-*-* } 937 }
 // { dg-excess-errors "" }
 
 #include <vector>
index 197131765668d76445e00b817dad03858fc32f07..834e10e38121c6ebca48ab8e878871360925a568 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1036 }
+// { dg-error "no matching" "" { target *-*-* } 1038 }
 // { dg-excess-errors "" }
 
 #include <vector>