OSDN Git Service

2009-12-14 Paolo Carlini <paolo.carlini@oracle.com>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Dec 2009 10:26:09 +0000 (10:26 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Dec 2009 10:26:09 +0000 (10:26 +0000)
* include/bits/stl_list.h (splice(iterator, list&), splice(iterator,
list&, iterator), splice(iterator, list&, iterator, iterator),
merge(list&), merge(list&, _StrictWeakOrdering)): Re-add in C++0x
mode for backward compatibility (see DR 1133).
(insert(iterator, size_type, const value_type&), insert(iterator,
_InputIterator, _InputIterator)): Adjust.
* include/bits/list.tcc (sort): Likewise.
* testsuite/23_containers/list/modifiers/1_c++0x.cc: Add.
* testsuite/23_containers/list/operations/2_c++0x.cc: Likewise.
* testsuite/23_containers/list/operations/3_c++0x.cc: Likewise.
* testsuite/23_containers/list/requirements/dr438/
assign_neg.cc: Adjust dg-error line numbers.
* 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.

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

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/list.tcc
libstdc++-v3/include/bits/stl_list.h
libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc [new file with mode: 0644]
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

index 39d1d70..7c20083 100644 (file)
@@ -1,3 +1,24 @@
+2009-12-14  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * include/bits/stl_list.h (splice(iterator, list&), splice(iterator,
+       list&, iterator), splice(iterator, list&, iterator, iterator),
+       merge(list&), merge(list&, _StrictWeakOrdering)): Re-add in C++0x
+       mode for backward compatibility (see DR 1133).
+       (insert(iterator, size_type, const value_type&), insert(iterator,
+       _InputIterator, _InputIterator)): Adjust.
+       * include/bits/list.tcc (sort): Likewise.
+       * testsuite/23_containers/list/modifiers/1_c++0x.cc: Add.
+       * testsuite/23_containers/list/operations/2_c++0x.cc: Likewise.
+       * testsuite/23_containers/list/operations/3_c++0x.cc: Likewise.
+       * testsuite/23_containers/list/requirements/dr438/
+       assign_neg.cc: Adjust dg-error line numbers.
+       * 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.
+
 2009-12-11  Paolo Carlini  <paolo.carlini@oracle.com>
            Matthias Klose  <doko@ubuntu.com>
 
index c461a41..899b418 100644 (file)
@@ -312,13 +312,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
 
         do
          {
-           __carry.splice(__carry.begin(), _GLIBCXX_MOVE(*this), begin());
+           __carry.splice(__carry.begin(), *this, begin());
 
            for(__counter = &__tmp[0];
                __counter != __fill && !__counter->empty();
                ++__counter)
              {
-               __counter->merge(_GLIBCXX_MOVE(__carry));
+               __counter->merge(__carry);
                __carry.swap(*__counter);
              }
            __carry.swap(*__counter);
@@ -328,7 +328,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
        while ( !empty() );
 
         for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
-          __counter->merge(_GLIBCXX_MOVE(*(__counter - 1)));
+          __counter->merge(*(__counter - 1));
         swap( *(__fill - 1) );
       }
     }
@@ -389,13 +389,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
 
            do
              {
-               __carry.splice(__carry.begin(), _GLIBCXX_MOVE(*this), begin());
+               __carry.splice(__carry.begin(), *this, begin());
 
                for(__counter = &__tmp[0];
                    __counter != __fill && !__counter->empty();
                    ++__counter)
                  {
-                   __counter->merge(_GLIBCXX_MOVE(__carry), __comp);
+                   __counter->merge(__carry, __comp);
                    __carry.swap(*__counter);
                  }
                __carry.swap(*__counter);
@@ -405,7 +405,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
            while ( !empty() );
 
            for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
-             __counter->merge(_GLIBCXX_MOVE(*(__counter - 1)), __comp);
+             __counter->merge(*(__counter - 1), __comp);
            swap(*(__fill - 1));
          }
       }
index 2a6e58f..51f8a8f 100644 (file)
@@ -1027,11 +1027,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       insert(iterator __position, size_type __n, const value_type& __x)
       {  
        list __tmp(__n, __x, _M_get_Node_allocator());
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
-         splice(__position, std::move(__tmp));
-#else
-         splice(__position, __tmp);
-#endif
+       splice(__position, __tmp);
       }
 
       /**
@@ -1053,11 +1049,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
               _InputIterator __last)
         {
          list __tmp(__first, __last, _M_get_Node_allocator());
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
-         splice(__position, std::move(__tmp));
-#else
          splice(__position, __tmp);
-#endif
        }
 
       /**
@@ -1164,6 +1156,12 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
          }
       }
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      splice(iterator __position, list& __x)
+      { splice(__position, std::move(__x)); }
+#endif
+
       /**
        *  @brief  Insert element from another %list.
        *  @param  position  Iterator referencing the element to insert before.
@@ -1191,6 +1189,12 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
        this->_M_transfer(__position, __i, __j);
       }
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      splice(iterator __position, list& __x, iterator __i)
+      { splice(__position, std::move(__x), __i); }
+#endif
+
       /**
        *  @brief  Insert range from another %list.
        *  @param  position  Iterator referencing the element to insert before.
@@ -1221,6 +1225,12 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
          }
       }
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
+      splice(iterator __position, list& __x, iterator __first, iterator __last)
+      { splice(__position, std::move(__x), __first, __last); }
+#endif
+
       /**
        *  @brief  Remove all elements equal to value.
        *  @param  value  The value to remove.
@@ -1288,10 +1298,15 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
        *  sorted order, leaving @a x empty when complete.  Elements in
        *  this list precede elements in @a x that are equal.
        */
-      void
 #ifdef __GXX_EXPERIMENTAL_CXX0X__
+      void
       merge(list&& __x);
+
+      void
+      merge(list& __x)
+      { merge(std::move(__x)); }
 #else
+      void
       merge(list& __x);
 #endif
 
@@ -1307,11 +1322,18 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
        *  in this list precede elements in @a x that are equivalent
        *  according to StrictWeakOrdering().
        */
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
       template<typename _StrictWeakOrdering>
         void
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
         merge(list&&, _StrictWeakOrdering);
+
+      template<typename _StrictWeakOrdering>
+        void
+        merge(list& __x, _StrictWeakOrdering __comp)
+        { merge(std::move(__x), __comp); }
 #else
+      template<typename _StrictWeakOrdering>
+        void
         merge(list&, _StrictWeakOrdering);
 #endif
 
diff --git a/libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc b/libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc
new file mode 100644 (file)
index 0000000..c055f70
--- /dev/null
@@ -0,0 +1,27 @@
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+#include "1.h"
+#include <list>
+
+int main()
+{
+  modifiers1<std::list<__gnu_test::copy_tracker> >();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc b/libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc
new file mode 100644 (file)
index 0000000..faaf2f7
--- /dev/null
@@ -0,0 +1,27 @@
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+#include "2.h"
+#include <list>
+
+int main()
+{
+  operations02<std::list<int> >();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc b/libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc
new file mode 100644 (file)
index 0000000..0598cfb
--- /dev/null
@@ -0,0 +1,27 @@
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+#include "3.h"
+#include <list>
+
+int main()
+{
+  operations03<std::list<int> >();
+  return 0;
+}
index c0b6ea4..a9ef744 100644 (file)
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1387 }
+// { dg-error "no matching" "" { target *-*-* } 1409 }
 // { dg-excess-errors "" }
 
 #include <list>
index 0d27211..a3e2962 100644 (file)
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1356 }
+// { dg-error "no matching" "" { target *-*-* } 1378 }
 // { dg-excess-errors "" }
 
 #include <list>
index bbf7808..f90ed94 100644 (file)
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1356 }
+// { dg-error "no matching" "" { target *-*-* } 1378 }
 // { dg-excess-errors "" }
 
 #include <list>
index 1e84b97..24bcee0 100644 (file)
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1356 }
+// { dg-error "no matching" "" { target *-*-* } 1378 }
 // { dg-excess-errors "" }
 
 #include <list>