DR 541, [WP].
authorPaolo Carlini <pcarlini@suse.de>
Fri, 22 Dec 2006 12:49:48 +0000 (12:49 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Fri, 22 Dec 2006 12:49:48 +0000 (12:49 +0000)
2006-12-22  Paolo Carlini  <pcarlini@suse.de>

        DR 541, [WP].
  * include/std/memory (auto_ptr<void>): Add specialization.
* testsuite/tr1/2_general_utilities/memory/shared_ptr/
assign/dr541.cc: New.
* testsuite/20_util/memory/auto_ptr/assign_neg.cc: Adjust
dg-error markers.
        * docs/html/ext/howto.html: Add an entry for DR 541.

From-SVN: r120148

libstdc++-v3/ChangeLog
libstdc++-v3/docs/html/ext/howto.html
libstdc++-v3/include/std/memory
libstdc++-v3/testsuite/20_util/memory/auto_ptr/assign_neg.cc
libstdc++-v3/testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/dr541.cc [new file with mode: 0644]

index c89db74..4a251af 100644 (file)
@@ -1,3 +1,13 @@
+2006-12-22  Paolo Carlini  <pcarlini@suse.de>
+
+        DR 541, [WP].
+       * include/std/memory (auto_ptr<void>): Add specialization.
+       * testsuite/tr1/2_general_utilities/memory/shared_ptr/
+       assign/dr541.cc: New.
+       * testsuite/20_util/memory/auto_ptr/assign_neg.cc: Adjust
+       dg-error markers.
+       * docs/html/ext/howto.html: Add an entry for DR 541.
+
 2006-12-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
        * docs/html/27_io/howto.html: Fix typos.
index 888591a..951e108 100644 (file)
         input_iterator' value_type.
     </dd>
 
+    <dt><a href="lwg-defects.html#541">541</a>:
+        <em>shared_ptr template assignment and void</em>
+    </dt>
+    <dd>Add an auto_ptr&lt;void&gt; specialization.
+    </dd>
+
     <dt><a href="lwg-active.html#543">543</a>:
         <em>valarray slice default constructor</em>
     </dt>
index b57a94f..c47d49c 100644 (file)
@@ -1,6 +1,7 @@
 // <memory> -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+// 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
@@ -367,7 +368,16 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
       template<typename _Tp1>
         operator auto_ptr<_Tp1>() throw()
         { return auto_ptr<_Tp1>(this->release()); }
-  };
+    };
+
+  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+  // 541. shared_ptr template assignment and void
+  template<>
+    class auto_ptr<void>
+    {
+    public:
+      typedef void element_type;
+    };
 
 _GLIBCXX_END_NAMESPACE
 
index cab11c9..4ae7acf 100644 (file)
@@ -1,6 +1,6 @@
 // { dg-do compile }
 
-// Copyright (C) 2002, 2003, 2004 Free Software Foundation
+// Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation
 //
 // 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
@@ -46,5 +46,5 @@ main()
   test01();
   return 0;
 }
-// { dg-error "candidates" "" { target *-*-* } 223 } 
-// { dg-error "::auto_ptr" "" { target *-*-* } 353 } 
+// { dg-error "candidates" "" { target *-*-* } 224 } 
+// { dg-error "::auto_ptr" "" { target *-*-* } 354 } 
diff --git a/libstdc++-v3/testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/dr541.cc b/libstdc++-v3/testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/dr541.cc
new file mode 100644 (file)
index 0000000..f9dc839
--- /dev/null
@@ -0,0 +1,30 @@
+// { dg-do compile }
+
+// Copyright (C) 2006 Free Software Foundation
+//
+// 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 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even 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 COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// TR1 2.2.2 Template class shared_ptr [tr.util.smartptr.shared]
+
+#include <tr1/memory>
+
+// DR 541. shared_ptr template assignment and void
+void test01()
+{
+  std::tr1::shared_ptr<void> p;
+  p.operator=<void>(p);
+}