]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2008-10-14 Paolo Carlini <paolo.carlini@oracle.com>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Oct 2008 17:14:49 +0000 (17:14 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Oct 2008 17:14:49 +0000 (17:14 +0000)
* include/bits/stl_list.h (_List_node<>::_List_node<>(_Args&&...)):
Add in C++0x mode.
(list<>::_M_create_node<>(_Args&&...)): Use _M_get_Node_allocator.
(list<>::_M_erase(iterator): Likewise, in C++0x mode.
* include/bits/list.tcc (_List_base<>::_M_clear): Likewise.
* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
Adjust dg-error line number.
* 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@141113 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/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 63cb52f169a69e4f6a6133434fb95df412352433..05e3e8a3b97f5d51696206e5eea93e303c838fd7 100644 (file)
@@ -1,3 +1,19 @@
+2008-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * include/bits/stl_list.h (_List_node<>::_List_node<>(_Args&&...)):
+       Add in C++0x mode.
+       (list<>::_M_create_node<>(_Args&&...)): Use _M_get_Node_allocator.
+       (list<>::_M_erase(iterator): Likewise, in C++0x mode.
+       * include/bits/list.tcc (_List_base<>::_M_clear): Likewise.
+       * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+       Adjust dg-error line number.
+       * 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.
+
 2008-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * include/bits/stl_tree.h (_Rb_tree<>::max_size): Use Node_allocator
index 57ee10c4c6e32cb348972a1e0bec8643a271588d..fc4f6ab0e99de45a7ecaa44cc70a0b981784b0c1 100644 (file)
@@ -1,6 +1,6 @@
 // List implementation (out of line) -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -75,7 +75,11 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
        {
          _Node* __tmp = __cur;
          __cur = static_cast<_Node*>(__cur->_M_next);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+         _M_get_Node_allocator().destroy(__tmp);
+#else
          _M_get_Tp_allocator().destroy(&__tmp->_M_data);
+#endif
          _M_put_node(__tmp);
        }
     }
index 7f31e3ccfc1624fe03bca6661752b5aae26b8b35..18f6f0276810ab08437a96376d80c88bf52738d0 100644 (file)
@@ -101,6 +101,12 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
     {
       ///< User's data.
       _Tp _M_data;
+
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename... _Args>
+        _List_node(_Args&&... __args)
+       : _List_node_base(), _M_data(std::forward<_Args>(__args)...) { }
+#endif
     };
 
   /**
@@ -478,8 +484,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
          _Node* __p = this->_M_get_node();
          try
            {
-             _M_get_Tp_allocator().construct(&__p->_M_data,
-                                             std::forward<_Args>(__args)...);
+             _M_get_Node_allocator().construct(__p,
+                                               std::forward<_Args>(__args)...);
            }
          catch(...)
            {
@@ -1423,7 +1429,11 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       {
         __position._M_node->unhook();
         _Node* __n = static_cast<_Node*>(__position._M_node);
-        _M_get_Tp_allocator().destroy(&__n->_M_data);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+        _M_get_Node_allocator().destroy(__n);
+#else
+       _M_get_Tp_allocator().destroy(&__n->_M_data);
+#endif
         _M_put_node(__n);
       }
 
index 23c541a8d2971a637643efa7168b46d63feb880e..5e7d7ea855bb3c1ad314a7f078b02a95b3444384 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1383 }
+// { dg-error "no matching" "" { target *-*-* } 1389 }
 // { dg-excess-errors "" }
 
 #include <list>
index 479c416590f055c482ab5ae2a3ee9dd1208b24c9..dd9a4c3452905cdd7153aa19fecdbcf876e05ede 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1352 }
+// { dg-error "no matching" "" { target *-*-* } 1358 }
 // { dg-excess-errors "" }
 
 #include <list>
index 3fd79856a5e58157d0b999f2783727bab6abbcb0..507c60df2fbe5735513a9ab9c1b7ae4f42c789dc 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1352 }
+// { dg-error "no matching" "" { target *-*-* } 1358 }
 // { dg-excess-errors "" }
 
 #include <list>
index 9b5e13a6e25fb491e9b4048d0487a8f35be8ce05..497db793cef2c312affcd95620f99240e2f5cc33 100644 (file)
@@ -19,7 +19,7 @@
 // USA.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1352 }
+// { dg-error "no matching" "" { target *-*-* } 1358 }
 // { dg-excess-errors "" }
 
 #include <list>