This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[v3] Implement resolution of DR 541 [WP]


Hi,

tested x86-linux, committed to mainline.

Paolo.

///////////////
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.
Index: include/std/memory
===================================================================
--- include/std/memory	(revision 120146)
+++ include/std/memory	(working copy)
@@ -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,8 +368,17 @@
       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
 
 #endif /* _GLIBCXX_MEMORY */
Index: docs/html/ext/howto.html
===================================================================
--- docs/html/ext/howto.html	(revision 120146)
+++ docs/html/ext/howto.html	(working copy)
@@ -594,6 +594,12 @@
         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: testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/dr541.cc
===================================================================
--- testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/dr541.cc	(revision 0)
+++ testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/dr541.cc	(revision 0)
@@ -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);
+}
Index: testsuite/20_util/memory/auto_ptr/assign_neg.cc
===================================================================
--- testsuite/20_util/memory/auto_ptr/assign_neg.cc	(revision 120146)
+++ testsuite/20_util/memory/auto_ptr/assign_neg.cc	(working copy)
@@ -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 @@
   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 } 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]