public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [v3] Implement DR 1306
@ 2010-02-19 18:56 Paolo Carlini
  0 siblings, 0 replies; only message in thread
From: Paolo Carlini @ 2010-02-19 18:56 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++

[-- Attachment #1: Type: text/plain, Size: 78 bytes --]

Hi,

tested x86_64-linux, committed to mainline.

Paolo.

///////////////////

[-- Attachment #2: CL_dr1306 --]
[-- Type: text/plain, Size: 343 bytes --]

2010-02-19  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/tr1_impl/array (array): Add pointer and const_pointer
	typedefs in C++0x mode, per DR 1306.
	* testsuite/util/testsuite_containers.h (basic_types): Add pointer
	and const_pointer typedefs.
	(pointer_aware_types): Remove.
	* testsuite/util/testsuite_container_traits.h: Adjust.

[-- Attachment #3: patch_dr1306 --]
[-- Type: text/plain, Size: 8080 bytes --]

Index: include/tr1_impl/array
===================================================================
--- include/tr1_impl/array	(revision 156898)
+++ include/tr1_impl/array	(working copy)
@@ -1,6 +1,6 @@
 // class template array -*- C++ -*-
 
-// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008, 2009, 2010 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
@@ -49,6 +49,10 @@
     struct array
     {
       typedef _Tp 	    			      value_type;
+#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
+      typedef _Tp*                                    pointer;
+      typedef const _Tp*                              const_pointer;
+#endif
       typedef value_type&                   	      reference;
       typedef const value_type&             	      const_reference;
       typedef value_type*          		      iterator;
Index: testsuite/util/testsuite_containers.h
===================================================================
--- testsuite/util/testsuite_containers.h	(revision 156898)
+++ testsuite/util/testsuite_containers.h	(working copy)
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 
-// Copyright (C) 2009 Free Software Foundation, Inc.
+// Copyright (C) 2009, 2010 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
@@ -33,6 +33,8 @@
       // Base container requirements (table 80)
       typedef _Tp 					test_type;
       typedef typename test_type::value_type 		value_type;
+      typedef typename test_type::pointer 		pointer;
+      typedef typename test_type::const_pointer 	const_pointer;
       typedef typename test_type::reference 		reference;
       typedef typename test_type::const_reference 	const_reference;
       typedef typename test_type::iterator 		iterator;
@@ -59,15 +61,6 @@
       typedef typename test_type::allocator_type      	 allocator_type;
     };
 
-  template<typename _Tp, bool _Bt = traits<_Tp>::is_pointer_aware::value>
-    struct pointer_aware_types
-    {
-      // Allocator-aware requirements (table 82)
-      typedef _Tp 					 test_type;
-      typedef typename test_type::pointer		 pointer;
-      typedef typename test_type::const_pointer		 const_pointer;
-    };
-
   template<typename _Tp, bool _Bt = traits<_Tp>::is_associative::value>
     struct associative_types
     {
@@ -114,15 +107,15 @@
     struct basic_types<_Tp, false> { };
 
   template<typename _Tp>
+    struct adaptor_types<_Tp, false> { };
+
+  template<typename _Tp>
     struct reversible_types<_Tp, false> { };
 
   template<typename _Tp>
     struct allocator_aware_types<_Tp, false> { };
 
   template<typename _Tp>
-    struct pointer_aware_types<_Tp, false> { };
-
-  template<typename _Tp>
     struct associative_types<_Tp, false> { };
 
   template<typename _Tp>
@@ -131,15 +124,12 @@
   template<typename _Tp>
     struct mapped_types<_Tp, false> { };
 
-  template<typename _Tp>
-    struct adaptor_types<_Tp, false> { };
-
   // Primary template.
   template<typename _Tp>
     struct types
     : basic_types<_Tp>, adaptor_types<_Tp>, reversible_types<_Tp>,
-      allocator_aware_types<_Tp>, pointer_aware_types<_Tp>,
-      associative_types<_Tp>, unordered_types<_Tp>, mapped_types<_Tp>
+      allocator_aware_types<_Tp>, associative_types<_Tp>,
+      unordered_types<_Tp>, mapped_types<_Tp>
     { };
 
 
Index: testsuite/util/testsuite_container_traits.h
===================================================================
--- testsuite/util/testsuite_container_traits.h	(revision 156898)
+++ testsuite/util/testsuite_container_traits.h	(working copy)
@@ -34,7 +34,6 @@
     typedef std::false_type	is_adaptor;
     typedef std::false_type	is_reversible;
     typedef std::false_type	is_allocator_aware;
-    typedef std::false_type	is_pointer_aware;
     typedef std::false_type	is_associative;
     typedef std::false_type	is_unordered;
     typedef std::false_type	is_mapped;
@@ -64,7 +63,6 @@
       typedef std::true_type	is_container;
       typedef std::true_type	is_reversible;
       typedef std::true_type	is_allocator_aware;
-      typedef std::true_type	is_pointer_aware;
 
       typedef std::true_type	has_erase;
       typedef std::true_type	has_insert;
@@ -77,7 +75,6 @@
     {
       typedef std::true_type	is_container;
       typedef std::true_type	is_allocator_aware;
-      typedef std::true_type	is_pointer_aware;
 
       typedef std::true_type	has_erase;
       typedef std::true_type	has_insert;
@@ -91,7 +88,6 @@
       typedef std::true_type	is_container;
       typedef std::true_type	is_reversible;
       typedef std::true_type	is_allocator_aware;
-      typedef std::true_type	is_pointer_aware;
 
       typedef std::true_type	has_erase;
       typedef std::true_type	has_insert;
@@ -105,7 +101,6 @@
       typedef std::true_type    is_container;
       typedef std::true_type    is_reversible;
       typedef std::true_type    is_allocator_aware;
-      typedef std::true_type    is_pointer_aware;
 
       typedef std::true_type	has_erase;
       typedef std::true_type	has_insert;
@@ -118,7 +113,6 @@
       typedef std::true_type    is_container;
       typedef std::true_type    is_reversible;
       typedef std::true_type    is_allocator_aware;
-      typedef std::true_type    is_pointer_aware;
 
       typedef std::true_type	has_erase;
       typedef std::true_type	has_insert;
@@ -132,7 +126,6 @@
       typedef std::true_type    is_container;
       typedef std::true_type    is_reversible;
       typedef std::true_type    is_allocator_aware;
-      typedef std::true_type    is_pointer_aware;
 
       typedef std::true_type	has_erase;
       typedef std::true_type	has_insert;
@@ -144,7 +137,6 @@
       typedef std::true_type	is_container;
       typedef std::true_type	is_reversible;
       typedef std::true_type	is_allocator_aware;
-      typedef std::true_type	is_pointer_aware;
       typedef std::true_type	is_associative;
       typedef std::true_type	is_mapped;
 
@@ -157,7 +149,6 @@
       typedef std::true_type	is_container;
       typedef std::true_type	is_reversible;
       typedef std::true_type	is_allocator_aware;
-      typedef std::true_type	is_pointer_aware;
       typedef std::true_type	is_associative;
       typedef std::true_type	is_mapped;
 
@@ -170,7 +161,6 @@
       typedef std::true_type	is_container;
       typedef std::true_type	is_reversible;
       typedef std::true_type	is_allocator_aware;
-      typedef std::true_type	is_pointer_aware;
       typedef std::true_type	is_associative;
 
       typedef std::true_type	has_insert;
@@ -182,7 +172,6 @@
       typedef std::true_type	is_container;
       typedef std::true_type	is_reversible;
       typedef std::true_type	is_allocator_aware;
-      typedef std::true_type	is_pointer_aware;
       typedef std::true_type	is_associative;
 
       typedef std::true_type	has_insert;
@@ -213,7 +202,6 @@
     {
       typedef std::true_type	is_container;
       typedef std::true_type	is_allocator_aware;
-      typedef std::true_type	is_pointer_aware;
       typedef std::true_type	is_unordered;
       typedef std::true_type	is_mapped;
 
@@ -228,7 +216,6 @@
     {
       typedef std::true_type	is_container;
       typedef std::true_type	is_allocator_aware;
-      typedef std::true_type	is_pointer_aware;
       typedef std::true_type	is_unordered;
       typedef std::true_type	is_mapped;
 
@@ -241,7 +228,6 @@
     {
       typedef std::true_type	is_container;
       typedef std::true_type	is_allocator_aware;
-      typedef std::true_type	is_pointer_aware;
       typedef std::true_type	is_unordered;
 
       typedef std::true_type	has_size_type_constructor;
@@ -254,7 +240,6 @@
     {
       typedef std::true_type	is_container;
       typedef std::true_type	is_allocator_aware;
-      typedef std::true_type	is_pointer_aware;
       typedef std::true_type	is_unordered;
 
       typedef std::true_type	has_size_type_constructor;

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2010-02-19 18:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-02-19 18:56 [v3] Implement DR 1306 Paolo Carlini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).