OSDN Git Service

2007-11-09 Paolo Carlini <pcarlini@suse.de>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Nov 2007 17:18:10 +0000 (17:18 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Nov 2007 17:18:10 +0000 (17:18 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130051 138bc75d-0d04-0410-961f-82ee72b054a4

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 baea4ac..c07aae4 100644 (file)
@@ -1,5 +1,58 @@
 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
        * acinclude.m4 ([GLIBCXX_ENABLE_C99], [GLIBCXX_CHECK_C99_TR1]):
        Use -std=c++98 instead of the default -std=gnu++98.
index cb99b22..255e00b 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 356cff2..ae01eae 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 4de31d8..41b84f3 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 bc9d13b..6426440 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 a280692..76d6b47 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 60d4d9c..5c897bd 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 d260156..3eb4b26 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 bf2cc27..0e5e6c1 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 6571d15..8d3bf83 100644 (file)
@@ -110,6 +110,8 @@ namespace __debug
       deque&
       operator=(deque&& __x)
       {
+        // NB: DR 675.
+       clear();
        swap(__x);        
        return *this;
       }
index 7174334..9e78fc9 100644 (file)
@@ -139,6 +139,8 @@ namespace __debug
       list&
       operator=(list&& __x)
       {
+        // NB: DR 675.
+       clear();
        swap(__x);
        return *this;
       }
index 671e1f8..1657564 100644 (file)
@@ -114,6 +114,8 @@ namespace __debug
       map&
       operator=(map&& __x)
       {
+        // NB: DR 675.
+       clear();
        swap(__x);
        return *this;
       }
index 1dd4de8..72f4411 100644 (file)
@@ -115,6 +115,8 @@ namespace __debug
       multimap&
       operator=(multimap&& __x)
       {
+        // NB: DR 675.
+       clear();
        swap(__x);
        return *this;
       }
index 7c58db1..ffe5b51 100644 (file)
@@ -112,6 +112,8 @@ namespace __debug
       multiset&
       operator=(multiset&& __x)
       {
+        // NB: DR 675.
+       clear();
        swap(__x);
        return *this;
       }
index bebc34c..3115610 100644 (file)
@@ -112,6 +112,8 @@ namespace __debug
       set&
       operator=(set&& __x)
       {
+        // NB: DR 675.
+       clear();
        swap(__x);
        return *this;
       }
index c5e4d12..8890ab9 100644 (file)
@@ -123,6 +123,8 @@ namespace __debug
       vector&
       operator=(vector&& __x)
       {
+        // NB: DR 675.
+       clear();
        swap(__x);
        return *this;
       }
index e843210..cd5de41 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 12c510a..929045f 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 49c1cfd..f133b86 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 58042e1..a60f922 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 2d00333..9b8258d 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 187b751..9655db0 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 843cb46..7899588 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 56a8056..1624cf8 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 8c2014d..fddbdac 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 5244708..c3ab6b0 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 87796f4..f3921a3 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 c3ca111..a326ceb 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 b85ae58..8bfc2d2 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 6e7d587..beae46d 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 532d89a..47023c5 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 640aa79..462058c 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 1971317..834e10e 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>