This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[v3] Small fix for tr1::add_reference
- From: Paolo Carlini <pcarlini at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 09 Oct 2007 19:20:27 +0200
- Subject: [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;