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] Small fix for tr1::add_reference


Hi,

tested x86_64-linux, committed to mainline.

Paolo.

///////////////////
2007-10-09  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1_impl/type_traitsfwd.h (add_reference): Remove.
	* include/tr1/type_traits (add_reference): Add forward declaration.
	* include/tr1_impl/functional (class _Mu<>): Fix.
Index: include/tr1_impl/type_traitsfwd.h
===================================================================
--- include/tr1_impl/type_traitsfwd.h	(revision 129164)
+++ include/tr1_impl/type_traitsfwd.h	(working copy)
@@ -153,9 +153,6 @@
   template<typename _Tp>
     struct remove_reference;
   
-  template<typename _Tp>
-    struct add_reference;
-
   /// @brief  array modifications [4.7.3].
   template<typename _Tp>
     struct remove_extent;
Index: include/tr1_impl/functional
===================================================================
--- include/tr1_impl/functional	(revision 129164)
+++ include/tr1_impl/functional	(working copy)
@@ -1149,7 +1149,11 @@
 	    __base_type;
 
 	public:
+#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
+	  typedef typename add_lvalue_reference<__base_type>::type type;
+#else
 	  typedef typename add_reference<__base_type>::type type;
+#endif
 	};
 
       template<typename _Tuple>
@@ -1177,7 +1181,11 @@
       template<typename _CVMu, typename _CVArg, typename _Tuple>
         struct result<_CVMu(_CVArg, _Tuple)>
         {
+#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
+	  typedef typename add_lvalue_reference<_CVArg>::type type;
+#else
 	  typedef typename add_reference<_CVArg>::type type;
+#endif
 	};
 
       // Pick up the cv-qualifiers of the argument
Index: include/tr1/type_traits
===================================================================
--- include/tr1/type_traits	(revision 129164)
+++ include/tr1/type_traits	(working copy)
@@ -171,6 +171,9 @@
     };
 
   template<typename _Tp>
+    struct add_reference;
+
+  template<typename _Tp>
     struct __is_int_or_cref
     {
       typedef typename remove_reference<_Tp>::type __rr_Tp;

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