summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2006-10-16 19:08:22 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2006-10-16 19:08:22 +0000
commitc1183cd5f56d1cc5a9841d9d87cc0a2c56e03386 (patch)
tree97aa987e97c9fa8875bbd7caafc23bdc6db11927
parent7fc8c87785ce0816ebd8740ce275d1384dbe2a5a (diff)
downloadgcc-c1183cd5f56d1cc5a9841d9d87cc0a2c56e03386.tar.gz
2006-10-16 Douglas Gregor <doug.gregor@gmail.com>
* include/Makefile.am (tr1_headers): Add new tuple_defs.h. * include/Makefile.in (tr1_headers): Regenerate. * include/tr1/tuple (tuple): Move declaration to tuple_defs.h. (get): Ditto. (operator==): Ditto. (operator<): Ditto. (operator!=): Ditto. (operator>): Ditto. (operator<=): Ditto. (operator>=): Ditto. (__stripped_tuple_type): Ditto. Include tuple.defs.h * include/tr1/tuple_iterate.h (tuple): Use _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS_UNNAMED macro instead of 10 "typename"s. (tuple_element): Use _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS and _GLIBCXX_TYPLE_ALL_TEMPLATE_ARGS instead of 10 parameters/arguments. * include/tr1/tuple_defs.h: New header, contains declarations and definitions for the tuple template with all arguments. * include/tr1/repeat.h (_GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS): New. (_GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS_UNNAMED): New. (_GLIBCXX_TUPLE_ALL_TEMPLATE_ARGS): New. (_GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS): New. (_GLIBCXX_TEMPLATE_ARGS_STRIPPED): New. * scripts/gen_includers.pl: Update. * scripts/gen_includers2.pl: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117790 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libstdc++-v3/ChangeLog30
-rw-r--r--libstdc++-v3/Makefile.in1
-rw-r--r--libstdc++-v3/include/Makefile.am1
-rw-r--r--libstdc++-v3/include/Makefile.in2
-rw-r--r--libstdc++-v3/include/tr1/repeat.h59
-rw-r--r--libstdc++-v3/include/tr1/tuple157
-rw-r--r--libstdc++-v3/include/tr1/tuple_defs.h108
-rw-r--r--libstdc++-v3/include/tr1/tuple_iterate.h11
-rw-r--r--libstdc++-v3/libmath/Makefile.in1
-rw-r--r--libstdc++-v3/libsupc++/Makefile.in1
-rw-r--r--libstdc++-v3/po/Makefile.in1
-rw-r--r--libstdc++-v3/scripts/gen_includers.pl32
-rw-r--r--libstdc++-v3/scripts/gen_includers2.pl31
-rw-r--r--libstdc++-v3/src/Makefile.in1
-rw-r--r--libstdc++-v3/testsuite/Makefile.in1
15 files changed, 277 insertions, 160 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 29b5e3cb60e..0bac304ba15 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,33 @@
+2006-10-16 Douglas Gregor <doug.gregor@gmail.com>
+
+ * include/Makefile.am (tr1_headers): Add new tuple_defs.h.
+ * include/Makefile.in (tr1_headers): Regenerate.
+ * include/tr1/tuple (tuple): Move declaration to tuple_defs.h.
+ (get): Ditto.
+ (operator==): Ditto.
+ (operator<): Ditto.
+ (operator!=): Ditto.
+ (operator>): Ditto.
+ (operator<=): Ditto.
+ (operator>=): Ditto.
+ (__stripped_tuple_type): Ditto.
+ Include tuple.defs.h
+ * include/tr1/tuple_iterate.h (tuple): Use
+ _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS_UNNAMED macro instead of 10
+ "typename"s.
+ (tuple_element): Use _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS and
+ _GLIBCXX_TYPLE_ALL_TEMPLATE_ARGS instead of 10
+ parameters/arguments.
+ * include/tr1/tuple_defs.h: New header, contains declarations and
+ definitions for the tuple template with all arguments.
+ * include/tr1/repeat.h (_GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS): New.
+ (_GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS_UNNAMED): New.
+ (_GLIBCXX_TUPLE_ALL_TEMPLATE_ARGS): New.
+ (_GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS): New.
+ (_GLIBCXX_TEMPLATE_ARGS_STRIPPED): New.
+ * scripts/gen_includers.pl: Update.
+ * scripts/gen_includers2.pl: New.
+
2006-10-16 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/29095 continued
diff --git a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in
index 6dc1ec00097..9339af44cdd 100644
--- a/libstdc++-v3/Makefile.in
+++ b/libstdc++-v3/Makefile.in
@@ -47,6 +47,7 @@ subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/enable.m4 \
$(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index 04cd93041ba..9fbc81fcdcc 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -599,6 +599,7 @@ tr1_headers = \
${tr1_srcdir}/stdlib.h \
${tr1_srcdir}/tgmath.h \
${tr1_srcdir}/tuple \
+ ${tr1_srcdir}/tuple_defs.h \
${tr1_srcdir}/tuple_iterate.h \
${tr1_srcdir}/type_traits \
${tr1_srcdir}/type_traits_fwd.h \
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 87eb188e3bf..9f9c29912d4 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -42,6 +42,7 @@ subdir = include
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/enable.m4 \
$(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
@@ -819,6 +820,7 @@ tr1_headers = \
${tr1_srcdir}/stdlib.h \
${tr1_srcdir}/tgmath.h \
${tr1_srcdir}/tuple \
+ ${tr1_srcdir}/tuple_defs.h \
${tr1_srcdir}/tuple_iterate.h \
${tr1_srcdir}/type_traits \
${tr1_srcdir}/type_traits_fwd.h \
diff --git a/libstdc++-v3/include/tr1/repeat.h b/libstdc++-v3/include/tr1/repeat.h
index eecf6196be8..ba24f29f861 100644
--- a/libstdc++-v3/include/tr1/repeat.h
+++ b/libstdc++-v3/include/tr1/repeat.h
@@ -37,6 +37,12 @@
# error Internal error: _GLIBCXX_REPEAT_HEADER must be set
#endif /* _GLIBCXX_REPEAT_HEADER */
+#ifndef _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS
+# define _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10
+# define _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS_UNNAMED typename, typename, typename, typename, typename, typename, typename, typename, typename, typename
+# define _GLIBCXX_TUPLE_ALL_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10
+#endif
+
#define _GLIBCXX_NUM_ARGS 0
#define _GLIBCXX_COMMA
#define _GLIBCXX_TEMPLATE_PARAMS
@@ -57,6 +63,8 @@
#define _GLIBCXX_TUPLE_ADD_CREF
#define _GLIBCXX_TUPLE_COPY_INIT
#define _GLIBCXX_TUPLE_ASSIGN
+#define _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS
+#define _GLIBCXX_TEMPLATE_ARGS_STRIPPED
#define _GLIBCXX_TEMPLATE_PARAMS_U
#define _GLIBCXX_TEMPLATE_ARGS_U
#define _GLIBCXX_REF_WRAP_PARAMS
@@ -70,6 +78,8 @@
#undef _GLIBCXX_REF_WRAP_PARAMS
#undef _GLIBCXX_TEMPLATE_ARGS_U
#undef _GLIBCXX_TEMPLATE_PARAMS_U
+#undef _GLIBCXX_TEMPLATE_ARGS_STRIPPED
+#undef _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS
#undef _GLIBCXX_TUPLE_ASSIGN
#undef _GLIBCXX_TUPLE_COPY_INIT
#undef _GLIBCXX_TUPLE_ADD_CREF
@@ -111,6 +121,8 @@
#define _GLIBCXX_TUPLE_ADD_CREF typename __add_c_ref<_T1>::type __a1
#define _GLIBCXX_TUPLE_COPY_INIT _M_arg1(__in._M_arg1)
#define _GLIBCXX_TUPLE_ASSIGN _M_arg1 = __in._M_arg1;
+#define _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS typename _T1 = _NullClass
+#define _GLIBCXX_TEMPLATE_ARGS_STRIPPED typename __strip_reference_wrapper<_T1>::__type
#define _GLIBCXX_TEMPLATE_PARAMS_U typename _U1
#define _GLIBCXX_TEMPLATE_ARGS_U _U1
#define _GLIBCXX_REF_WRAP_PARAMS ref(__a1)
@@ -124,6 +136,8 @@
#undef _GLIBCXX_REF_WRAP_PARAMS
#undef _GLIBCXX_TEMPLATE_ARGS_U
#undef _GLIBCXX_TEMPLATE_PARAMS_U
+#undef _GLIBCXX_TEMPLATE_ARGS_STRIPPED
+#undef _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS
#undef _GLIBCXX_TUPLE_ASSIGN
#undef _GLIBCXX_TUPLE_COPY_INIT
#undef _GLIBCXX_TUPLE_ADD_CREF
@@ -165,6 +179,8 @@
#define _GLIBCXX_TUPLE_ADD_CREF typename __add_c_ref<_T1>::type __a1, typename __add_c_ref<_T2>::type __a2
#define _GLIBCXX_TUPLE_COPY_INIT _M_arg1(__in._M_arg1), _M_arg2(__in._M_arg2)
#define _GLIBCXX_TUPLE_ASSIGN _M_arg1 = __in._M_arg1; _M_arg2 = __in._M_arg2;
+#define _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS typename _T1 = _NullClass, typename _T2 = _NullClass
+#define _GLIBCXX_TEMPLATE_ARGS_STRIPPED typename __strip_reference_wrapper<_T1>::__type, typename __strip_reference_wrapper<_T2>::__type
#define _GLIBCXX_TEMPLATE_PARAMS_U typename _U1, typename _U2
#define _GLIBCXX_TEMPLATE_ARGS_U _U1, _U2
#define _GLIBCXX_REF_WRAP_PARAMS ref(__a1), ref(__a2)
@@ -178,6 +194,8 @@
#undef _GLIBCXX_REF_WRAP_PARAMS
#undef _GLIBCXX_TEMPLATE_ARGS_U
#undef _GLIBCXX_TEMPLATE_PARAMS_U
+#undef _GLIBCXX_TEMPLATE_ARGS_STRIPPED
+#undef _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS
#undef _GLIBCXX_TUPLE_ASSIGN
#undef _GLIBCXX_TUPLE_COPY_INIT
#undef _GLIBCXX_TUPLE_ADD_CREF
@@ -198,7 +216,6 @@
#undef _GLIBCXX_TEMPLATE_PARAMS
#undef _GLIBCXX_COMMA
#undef _GLIBCXX_NUM_ARGS
-
#define _GLIBCXX_NUM_ARGS 3
#define _GLIBCXX_COMMA ,
#define _GLIBCXX_TEMPLATE_PARAMS typename _T1, typename _T2, typename _T3
@@ -219,6 +236,8 @@
#define _GLIBCXX_TUPLE_ADD_CREF typename __add_c_ref<_T1>::type __a1, typename __add_c_ref<_T2>::type __a2, typename __add_c_ref<_T3>::type __a3
#define _GLIBCXX_TUPLE_COPY_INIT _M_arg1(__in._M_arg1), _M_arg2(__in._M_arg2), _M_arg3(__in._M_arg3)
#define _GLIBCXX_TUPLE_ASSIGN _M_arg1 = __in._M_arg1; _M_arg2 = __in._M_arg2; _M_arg3 = __in._M_arg3;
+#define _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS typename _T1 = _NullClass, typename _T2 = _NullClass, typename _T3 = _NullClass
+#define _GLIBCXX_TEMPLATE_ARGS_STRIPPED typename __strip_reference_wrapper<_T1>::__type, typename __strip_reference_wrapper<_T2>::__type, typename __strip_reference_wrapper<_T3>::__type
#define _GLIBCXX_TEMPLATE_PARAMS_U typename _U1, typename _U2, typename _U3
#define _GLIBCXX_TEMPLATE_ARGS_U _U1, _U2, _U3
#define _GLIBCXX_REF_WRAP_PARAMS ref(__a1), ref(__a2), ref(__a3)
@@ -232,6 +251,8 @@
#undef _GLIBCXX_REF_WRAP_PARAMS
#undef _GLIBCXX_TEMPLATE_ARGS_U
#undef _GLIBCXX_TEMPLATE_PARAMS_U
+#undef _GLIBCXX_TEMPLATE_ARGS_STRIPPED
+#undef _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS
#undef _GLIBCXX_TUPLE_ASSIGN
#undef _GLIBCXX_TUPLE_COPY_INIT
#undef _GLIBCXX_TUPLE_ADD_CREF
@@ -252,7 +273,6 @@
#undef _GLIBCXX_TEMPLATE_PARAMS
#undef _GLIBCXX_COMMA
#undef _GLIBCXX_NUM_ARGS
-
#define _GLIBCXX_NUM_ARGS 4
#define _GLIBCXX_COMMA ,
#define _GLIBCXX_TEMPLATE_PARAMS typename _T1, typename _T2, typename _T3, typename _T4
@@ -273,6 +293,8 @@
#define _GLIBCXX_TUPLE_ADD_CREF typename __add_c_ref<_T1>::type __a1, typename __add_c_ref<_T2>::type __a2, typename __add_c_ref<_T3>::type __a3, typename __add_c_ref<_T4>::type __a4
#define _GLIBCXX_TUPLE_COPY_INIT _M_arg1(__in._M_arg1), _M_arg2(__in._M_arg2), _M_arg3(__in._M_arg3), _M_arg4(__in._M_arg4)
#define _GLIBCXX_TUPLE_ASSIGN _M_arg1 = __in._M_arg1; _M_arg2 = __in._M_arg2; _M_arg3 = __in._M_arg3; _M_arg4 = __in._M_arg4;
+#define _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS typename _T1 = _NullClass, typename _T2 = _NullClass, typename _T3 = _NullClass, typename _T4 = _NullClass
+#define _GLIBCXX_TEMPLATE_ARGS_STRIPPED typename __strip_reference_wrapper<_T1>::__type, typename __strip_reference_wrapper<_T2>::__type, typename __strip_reference_wrapper<_T3>::__type, typename __strip_reference_wrapper<_T4>::__type
#define _GLIBCXX_TEMPLATE_PARAMS_U typename _U1, typename _U2, typename _U3, typename _U4
#define _GLIBCXX_TEMPLATE_ARGS_U _U1, _U2, _U3, _U4
#define _GLIBCXX_REF_WRAP_PARAMS ref(__a1), ref(__a2), ref(__a3), ref(__a4)
@@ -286,6 +308,8 @@
#undef _GLIBCXX_REF_WRAP_PARAMS
#undef _GLIBCXX_TEMPLATE_ARGS_U
#undef _GLIBCXX_TEMPLATE_PARAMS_U
+#undef _GLIBCXX_TEMPLATE_ARGS_STRIPPED
+#undef _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS
#undef _GLIBCXX_TUPLE_ASSIGN
#undef _GLIBCXX_TUPLE_COPY_INIT
#undef _GLIBCXX_TUPLE_ADD_CREF
@@ -306,7 +330,6 @@
#undef _GLIBCXX_TEMPLATE_PARAMS
#undef _GLIBCXX_COMMA
#undef _GLIBCXX_NUM_ARGS
-
#define _GLIBCXX_NUM_ARGS 5
#define _GLIBCXX_COMMA ,
#define _GLIBCXX_TEMPLATE_PARAMS typename _T1, typename _T2, typename _T3, typename _T4, typename _T5
@@ -327,6 +350,8 @@
#define _GLIBCXX_TUPLE_ADD_CREF typename __add_c_ref<_T1>::type __a1, typename __add_c_ref<_T2>::type __a2, typename __add_c_ref<_T3>::type __a3, typename __add_c_ref<_T4>::type __a4, typename __add_c_ref<_T5>::type __a5
#define _GLIBCXX_TUPLE_COPY_INIT _M_arg1(__in._M_arg1), _M_arg2(__in._M_arg2), _M_arg3(__in._M_arg3), _M_arg4(__in._M_arg4), _M_arg5(__in._M_arg5)
#define _GLIBCXX_TUPLE_ASSIGN _M_arg1 = __in._M_arg1; _M_arg2 = __in._M_arg2; _M_arg3 = __in._M_arg3; _M_arg4 = __in._M_arg4; _M_arg5 = __in._M_arg5;
+#define _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS typename _T1 = _NullClass, typename _T2 = _NullClass, typename _T3 = _NullClass, typename _T4 = _NullClass, typename _T5 = _NullClass
+#define _GLIBCXX_TEMPLATE_ARGS_STRIPPED typename __strip_reference_wrapper<_T1>::__type, typename __strip_reference_wrapper<_T2>::__type, typename __strip_reference_wrapper<_T3>::__type, typename __strip_reference_wrapper<_T4>::__type, typename __strip_reference_wrapper<_T5>::__type
#define _GLIBCXX_TEMPLATE_PARAMS_U typename _U1, typename _U2, typename _U3, typename _U4, typename _U5
#define _GLIBCXX_TEMPLATE_ARGS_U _U1, _U2, _U3, _U4, _U5
#define _GLIBCXX_REF_WRAP_PARAMS ref(__a1), ref(__a2), ref(__a3), ref(__a4), ref(__a5)
@@ -340,6 +365,8 @@
#undef _GLIBCXX_REF_WRAP_PARAMS
#undef _GLIBCXX_TEMPLATE_ARGS_U
#undef _GLIBCXX_TEMPLATE_PARAMS_U
+#undef _GLIBCXX_TEMPLATE_ARGS_STRIPPED
+#undef _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS
#undef _GLIBCXX_TUPLE_ASSIGN
#undef _GLIBCXX_TUPLE_COPY_INIT
#undef _GLIBCXX_TUPLE_ADD_CREF
@@ -360,7 +387,6 @@
#undef _GLIBCXX_TEMPLATE_PARAMS
#undef _GLIBCXX_COMMA
#undef _GLIBCXX_NUM_ARGS
-
#define _GLIBCXX_NUM_ARGS 6
#define _GLIBCXX_COMMA ,
#define _GLIBCXX_TEMPLATE_PARAMS typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6
@@ -381,6 +407,8 @@
#define _GLIBCXX_TUPLE_ADD_CREF typename __add_c_ref<_T1>::type __a1, typename __add_c_ref<_T2>::type __a2, typename __add_c_ref<_T3>::type __a3, typename __add_c_ref<_T4>::type __a4, typename __add_c_ref<_T5>::type __a5, typename __add_c_ref<_T6>::type __a6
#define _GLIBCXX_TUPLE_COPY_INIT _M_arg1(__in._M_arg1), _M_arg2(__in._M_arg2), _M_arg3(__in._M_arg3), _M_arg4(__in._M_arg4), _M_arg5(__in._M_arg5), _M_arg6(__in._M_arg6)
#define _GLIBCXX_TUPLE_ASSIGN _M_arg1 = __in._M_arg1; _M_arg2 = __in._M_arg2; _M_arg3 = __in._M_arg3; _M_arg4 = __in._M_arg4; _M_arg5 = __in._M_arg5; _M_arg6 = __in._M_arg6;
+#define _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS typename _T1 = _NullClass, typename _T2 = _NullClass, typename _T3 = _NullClass, typename _T4 = _NullClass, typename _T5 = _NullClass, typename _T6 = _NullClass
+#define _GLIBCXX_TEMPLATE_ARGS_STRIPPED typename __strip_reference_wrapper<_T1>::__type, typename __strip_reference_wrapper<_T2>::__type, typename __strip_reference_wrapper<_T3>::__type, typename __strip_reference_wrapper<_T4>::__type, typename __strip_reference_wrapper<_T5>::__type, typename __strip_reference_wrapper<_T6>::__type
#define _GLIBCXX_TEMPLATE_PARAMS_U typename _U1, typename _U2, typename _U3, typename _U4, typename _U5, typename _U6
#define _GLIBCXX_TEMPLATE_ARGS_U _U1, _U2, _U3, _U4, _U5, _U6
#define _GLIBCXX_REF_WRAP_PARAMS ref(__a1), ref(__a2), ref(__a3), ref(__a4), ref(__a5), ref(__a6)
@@ -394,6 +422,8 @@
#undef _GLIBCXX_REF_WRAP_PARAMS
#undef _GLIBCXX_TEMPLATE_ARGS_U
#undef _GLIBCXX_TEMPLATE_PARAMS_U
+#undef _GLIBCXX_TEMPLATE_ARGS_STRIPPED
+#undef _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS
#undef _GLIBCXX_TUPLE_ASSIGN
#undef _GLIBCXX_TUPLE_COPY_INIT
#undef _GLIBCXX_TUPLE_ADD_CREF
@@ -414,7 +444,6 @@
#undef _GLIBCXX_TEMPLATE_PARAMS
#undef _GLIBCXX_COMMA
#undef _GLIBCXX_NUM_ARGS
-
#define _GLIBCXX_NUM_ARGS 7
#define _GLIBCXX_COMMA ,
#define _GLIBCXX_TEMPLATE_PARAMS typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7
@@ -435,6 +464,8 @@
#define _GLIBCXX_TUPLE_ADD_CREF typename __add_c_ref<_T1>::type __a1, typename __add_c_ref<_T2>::type __a2, typename __add_c_ref<_T3>::type __a3, typename __add_c_ref<_T4>::type __a4, typename __add_c_ref<_T5>::type __a5, typename __add_c_ref<_T6>::type __a6, typename __add_c_ref<_T7>::type __a7
#define _GLIBCXX_TUPLE_COPY_INIT _M_arg1(__in._M_arg1), _M_arg2(__in._M_arg2), _M_arg3(__in._M_arg3), _M_arg4(__in._M_arg4), _M_arg5(__in._M_arg5), _M_arg6(__in._M_arg6), _M_arg7(__in._M_arg7)
#define _GLIBCXX_TUPLE_ASSIGN _M_arg1 = __in._M_arg1; _M_arg2 = __in._M_arg2; _M_arg3 = __in._M_arg3; _M_arg4 = __in._M_arg4; _M_arg5 = __in._M_arg5; _M_arg6 = __in._M_arg6; _M_arg7 = __in._M_arg7;
+#define _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS typename _T1 = _NullClass, typename _T2 = _NullClass, typename _T3 = _NullClass, typename _T4 = _NullClass, typename _T5 = _NullClass, typename _T6 = _NullClass, typename _T7 = _NullClass
+#define _GLIBCXX_TEMPLATE_ARGS_STRIPPED typename __strip_reference_wrapper<_T1>::__type, typename __strip_reference_wrapper<_T2>::__type, typename __strip_reference_wrapper<_T3>::__type, typename __strip_reference_wrapper<_T4>::__type, typename __strip_reference_wrapper<_T5>::__type, typename __strip_reference_wrapper<_T6>::__type, typename __strip_reference_wrapper<_T7>::__type
#define _GLIBCXX_TEMPLATE_PARAMS_U typename _U1, typename _U2, typename _U3, typename _U4, typename _U5, typename _U6, typename _U7
#define _GLIBCXX_TEMPLATE_ARGS_U _U1, _U2, _U3, _U4, _U5, _U6, _U7
#define _GLIBCXX_REF_WRAP_PARAMS ref(__a1), ref(__a2), ref(__a3), ref(__a4), ref(__a5), ref(__a6), ref(__a7)
@@ -448,6 +479,8 @@
#undef _GLIBCXX_REF_WRAP_PARAMS
#undef _GLIBCXX_TEMPLATE_ARGS_U
#undef _GLIBCXX_TEMPLATE_PARAMS_U
+#undef _GLIBCXX_TEMPLATE_ARGS_STRIPPED
+#undef _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS
#undef _GLIBCXX_TUPLE_ASSIGN
#undef _GLIBCXX_TUPLE_COPY_INIT
#undef _GLIBCXX_TUPLE_ADD_CREF
@@ -468,7 +501,6 @@
#undef _GLIBCXX_TEMPLATE_PARAMS
#undef _GLIBCXX_COMMA
#undef _GLIBCXX_NUM_ARGS
-
#define _GLIBCXX_NUM_ARGS 8
#define _GLIBCXX_COMMA ,
#define _GLIBCXX_TEMPLATE_PARAMS typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8
@@ -489,6 +521,8 @@
#define _GLIBCXX_TUPLE_ADD_CREF typename __add_c_ref<_T1>::type __a1, typename __add_c_ref<_T2>::type __a2, typename __add_c_ref<_T3>::type __a3, typename __add_c_ref<_T4>::type __a4, typename __add_c_ref<_T5>::type __a5, typename __add_c_ref<_T6>::type __a6, typename __add_c_ref<_T7>::type __a7, typename __add_c_ref<_T8>::type __a8
#define _GLIBCXX_TUPLE_COPY_INIT _M_arg1(__in._M_arg1), _M_arg2(__in._M_arg2), _M_arg3(__in._M_arg3), _M_arg4(__in._M_arg4), _M_arg5(__in._M_arg5), _M_arg6(__in._M_arg6), _M_arg7(__in._M_arg7), _M_arg8(__in._M_arg8)
#define _GLIBCXX_TUPLE_ASSIGN _M_arg1 = __in._M_arg1; _M_arg2 = __in._M_arg2; _M_arg3 = __in._M_arg3; _M_arg4 = __in._M_arg4; _M_arg5 = __in._M_arg5; _M_arg6 = __in._M_arg6; _M_arg7 = __in._M_arg7; _M_arg8 = __in._M_arg8;
+#define _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS typename _T1 = _NullClass, typename _T2 = _NullClass, typename _T3 = _NullClass, typename _T4 = _NullClass, typename _T5 = _NullClass, typename _T6 = _NullClass, typename _T7 = _NullClass, typename _T8 = _NullClass
+#define _GLIBCXX_TEMPLATE_ARGS_STRIPPED typename __strip_reference_wrapper<_T1>::__type, typename __strip_reference_wrapper<_T2>::__type, typename __strip_reference_wrapper<_T3>::__type, typename __strip_reference_wrapper<_T4>::__type, typename __strip_reference_wrapper<_T5>::__type, typename __strip_reference_wrapper<_T6>::__type, typename __strip_reference_wrapper<_T7>::__type, typename __strip_reference_wrapper<_T8>::__type
#define _GLIBCXX_TEMPLATE_PARAMS_U typename _U1, typename _U2, typename _U3, typename _U4, typename _U5, typename _U6, typename _U7, typename _U8
#define _GLIBCXX_TEMPLATE_ARGS_U _U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8
#define _GLIBCXX_REF_WRAP_PARAMS ref(__a1), ref(__a2), ref(__a3), ref(__a4), ref(__a5), ref(__a6), ref(__a7), ref(__a8)
@@ -502,6 +536,8 @@
#undef _GLIBCXX_REF_WRAP_PARAMS
#undef _GLIBCXX_TEMPLATE_ARGS_U
#undef _GLIBCXX_TEMPLATE_PARAMS_U
+#undef _GLIBCXX_TEMPLATE_ARGS_STRIPPED
+#undef _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS
#undef _GLIBCXX_TUPLE_ASSIGN
#undef _GLIBCXX_TUPLE_COPY_INIT
#undef _GLIBCXX_TUPLE_ADD_CREF
@@ -522,7 +558,6 @@
#undef _GLIBCXX_TEMPLATE_PARAMS
#undef _GLIBCXX_COMMA
#undef _GLIBCXX_NUM_ARGS
-
#define _GLIBCXX_NUM_ARGS 9
#define _GLIBCXX_COMMA ,
#define _GLIBCXX_TEMPLATE_PARAMS typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9
@@ -543,6 +578,8 @@
#define _GLIBCXX_TUPLE_ADD_CREF typename __add_c_ref<_T1>::type __a1, typename __add_c_ref<_T2>::type __a2, typename __add_c_ref<_T3>::type __a3, typename __add_c_ref<_T4>::type __a4, typename __add_c_ref<_T5>::type __a5, typename __add_c_ref<_T6>::type __a6, typename __add_c_ref<_T7>::type __a7, typename __add_c_ref<_T8>::type __a8, typename __add_c_ref<_T9>::type __a9
#define _GLIBCXX_TUPLE_COPY_INIT _M_arg1(__in._M_arg1), _M_arg2(__in._M_arg2), _M_arg3(__in._M_arg3), _M_arg4(__in._M_arg4), _M_arg5(__in._M_arg5), _M_arg6(__in._M_arg6), _M_arg7(__in._M_arg7), _M_arg8(__in._M_arg8), _M_arg9(__in._M_arg9)
#define _GLIBCXX_TUPLE_ASSIGN _M_arg1 = __in._M_arg1; _M_arg2 = __in._M_arg2; _M_arg3 = __in._M_arg3; _M_arg4 = __in._M_arg4; _M_arg5 = __in._M_arg5; _M_arg6 = __in._M_arg6; _M_arg7 = __in._M_arg7; _M_arg8 = __in._M_arg8; _M_arg9 = __in._M_arg9;
+#define _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS typename _T1 = _NullClass, typename _T2 = _NullClass, typename _T3 = _NullClass, typename _T4 = _NullClass, typename _T5 = _NullClass, typename _T6 = _NullClass, typename _T7 = _NullClass, typename _T8 = _NullClass, typename _T9 = _NullClass
+#define _GLIBCXX_TEMPLATE_ARGS_STRIPPED typename __strip_reference_wrapper<_T1>::__type, typename __strip_reference_wrapper<_T2>::__type, typename __strip_reference_wrapper<_T3>::__type, typename __strip_reference_wrapper<_T4>::__type, typename __strip_reference_wrapper<_T5>::__type, typename __strip_reference_wrapper<_T6>::__type, typename __strip_reference_wrapper<_T7>::__type, typename __strip_reference_wrapper<_T8>::__type, typename __strip_reference_wrapper<_T9>::__type
#define _GLIBCXX_TEMPLATE_PARAMS_U typename _U1, typename _U2, typename _U3, typename _U4, typename _U5, typename _U6, typename _U7, typename _U8, typename _U9
#define _GLIBCXX_TEMPLATE_ARGS_U _U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9
#define _GLIBCXX_REF_WRAP_PARAMS ref(__a1), ref(__a2), ref(__a3), ref(__a4), ref(__a5), ref(__a6), ref(__a7), ref(__a8), ref(__a9)
@@ -556,6 +593,8 @@
#undef _GLIBCXX_REF_WRAP_PARAMS
#undef _GLIBCXX_TEMPLATE_ARGS_U
#undef _GLIBCXX_TEMPLATE_PARAMS_U
+#undef _GLIBCXX_TEMPLATE_ARGS_STRIPPED
+#undef _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS
#undef _GLIBCXX_TUPLE_ASSIGN
#undef _GLIBCXX_TUPLE_COPY_INIT
#undef _GLIBCXX_TUPLE_ADD_CREF
@@ -576,7 +615,6 @@
#undef _GLIBCXX_TEMPLATE_PARAMS
#undef _GLIBCXX_COMMA
#undef _GLIBCXX_NUM_ARGS
-
#define _GLIBCXX_LAST_INCLUDE
#define _GLIBCXX_NUM_ARGS 10
#define _GLIBCXX_COMMA ,
@@ -598,6 +636,8 @@
#define _GLIBCXX_TUPLE_ADD_CREF typename __add_c_ref<_T1>::type __a1, typename __add_c_ref<_T2>::type __a2, typename __add_c_ref<_T3>::type __a3, typename __add_c_ref<_T4>::type __a4, typename __add_c_ref<_T5>::type __a5, typename __add_c_ref<_T6>::type __a6, typename __add_c_ref<_T7>::type __a7, typename __add_c_ref<_T8>::type __a8, typename __add_c_ref<_T9>::type __a9, typename __add_c_ref<_T10>::type __a10
#define _GLIBCXX_TUPLE_COPY_INIT _M_arg1(__in._M_arg1), _M_arg2(__in._M_arg2), _M_arg3(__in._M_arg3), _M_arg4(__in._M_arg4), _M_arg5(__in._M_arg5), _M_arg6(__in._M_arg6), _M_arg7(__in._M_arg7), _M_arg8(__in._M_arg8), _M_arg9(__in._M_arg9), _M_arg10(__in._M_arg10)
#define _GLIBCXX_TUPLE_ASSIGN _M_arg1 = __in._M_arg1; _M_arg2 = __in._M_arg2; _M_arg3 = __in._M_arg3; _M_arg4 = __in._M_arg4; _M_arg5 = __in._M_arg5; _M_arg6 = __in._M_arg6; _M_arg7 = __in._M_arg7; _M_arg8 = __in._M_arg8; _M_arg9 = __in._M_arg9; _M_arg10 = __in._M_arg10;
+#define _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS typename _T1 = _NullClass, typename _T2 = _NullClass, typename _T3 = _NullClass, typename _T4 = _NullClass, typename _T5 = _NullClass, typename _T6 = _NullClass, typename _T7 = _NullClass, typename _T8 = _NullClass, typename _T9 = _NullClass, typename _T10 = _NullClass
+#define _GLIBCXX_TEMPLATE_ARGS_STRIPPED typename __strip_reference_wrapper<_T1>::__type, typename __strip_reference_wrapper<_T2>::__type, typename __strip_reference_wrapper<_T3>::__type, typename __strip_reference_wrapper<_T4>::__type, typename __strip_reference_wrapper<_T5>::__type, typename __strip_reference_wrapper<_T6>::__type, typename __strip_reference_wrapper<_T7>::__type, typename __strip_reference_wrapper<_T8>::__type, typename __strip_reference_wrapper<_T9>::__type, typename __strip_reference_wrapper<_T10>::__type
#define _GLIBCXX_TEMPLATE_PARAMS_U typename _U1, typename _U2, typename _U3, typename _U4, typename _U5, typename _U6, typename _U7, typename _U8, typename _U9, typename _U10
#define _GLIBCXX_TEMPLATE_ARGS_U _U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9, _U10
#define _GLIBCXX_REF_WRAP_PARAMS ref(__a1), ref(__a2), ref(__a3), ref(__a4), ref(__a5), ref(__a6), ref(__a7), ref(__a8), ref(__a9), ref(__a10)
@@ -611,6 +651,8 @@
#undef _GLIBCXX_REF_WRAP_PARAMS
#undef _GLIBCXX_TEMPLATE_ARGS_U
#undef _GLIBCXX_TEMPLATE_PARAMS_U
+#undef _GLIBCXX_TEMPLATE_ARGS_STRIPPED
+#undef _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS
#undef _GLIBCXX_TUPLE_ASSIGN
#undef _GLIBCXX_TUPLE_COPY_INIT
#undef _GLIBCXX_TUPLE_ADD_CREF
@@ -631,6 +673,5 @@
#undef _GLIBCXX_TEMPLATE_PARAMS
#undef _GLIBCXX_COMMA
#undef _GLIBCXX_NUM_ARGS
-
#undef _GLIBCXX_LAST_INCLUDE
diff --git a/libstdc++-v3/include/tr1/tuple b/libstdc++-v3/include/tr1/tuple
index bd1a81fad1f..4ec88bd9214 100644
--- a/libstdc++-v3/include/tr1/tuple
+++ b/libstdc++-v3/include/tr1/tuple
@@ -47,13 +47,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
// when the tuple is not maximum possible size.
struct _NullClass { };
- template<typename _Tp0 = _NullClass, typename _Tp1 = _NullClass,
- typename _Tp2 = _NullClass, typename _Tp3 = _NullClass,
- typename _Tp4 = _NullClass, typename _Tp5 = _NullClass,
- typename _Tp6 = _NullClass, typename _Tp7 = _NullClass,
- typename _Tp8 = _NullClass, typename _Tp9 = _NullClass>
- class tuple;
-
/// Gives the type of the ith element of a given tuple type.
template<int __i, typename _Tp>
struct tuple_element;
@@ -86,38 +79,32 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
// Returns a const reference to the ith element of a tuple.
// Any const or non-const ref elements are returned with their original type.
- template<int __i, typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
- typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
- typename _Tp8, typename _Tp9>
- typename __add_ref<typename tuple_element<__i, tuple<_Tp0, _Tp1, _Tp2,
- _Tp3, _Tp4, _Tp5,
- _Tp6, _Tp7, _Tp8,
- _Tp9> >::type>::type
- get(tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8,
- _Tp9>& __t)
- {
- return __get_helper<__i, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
- _Tp7, _Tp8, _Tp9> >::get_value(__t);
- }
-
- template<int __i, typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
- typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
- typename _Tp8, typename _Tp9>
- typename __add_c_ref<typename tuple_element<__i, tuple<_Tp0, _Tp1, _Tp2,
- _Tp3, _Tp4, _Tp5,
- _Tp6, _Tp7, _Tp8,
- _Tp9> >::type>::type
- get(const tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8,
- _Tp9>& __t)
- {
- return __get_helper<__i, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
- _Tp7, _Tp8, _Tp9> >::get_value(__t);
- }
// This class helps construct the various comparison operations on tuples
template<int __check_equal_size, int __i, int __j, typename _Tp, typename _Up>
struct __tuple_compare;
+ // Helper which adds a reference to a type when given a reference_wrapper
+ template<typename _Tp>
+ struct __strip_reference_wrapper
+ {
+ typedef _Tp __type;
+ };
+
+ template<typename _Tp>
+ struct __strip_reference_wrapper<reference_wrapper<_Tp> >
+ {
+ typedef _Tp& __type;
+ };
+
+ template<typename _Tp>
+ struct __strip_reference_wrapper<const reference_wrapper<_Tp> >
+ {
+ typedef _Tp& __type;
+ };
+
+ #include "tuple_defs.h"
+
template<int __i, int __j, typename _Tp, typename _Up>
struct __tuple_compare<0, __i, __j, _Tp, _Up>
{
@@ -142,108 +129,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
{ return false; }
};
- template<typename _T1, typename _T2, typename _T3, typename _T4, typename _T5,
- typename _T6, typename _T7, typename _T8, typename _T9, typename _T10,
- typename _U1, typename _U2, typename _U3, typename _U4, typename _U5,
- typename _U6, typename _U7, typename _U8, typename _U9, typename _U10>
- bool
- operator==(const tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10>& __t,
- const tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9, _U10>& __u)
- {
- typedef tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10> _Tp;
- typedef tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8,_U9, _U10> _Up;
- return __tuple_compare<tuple_size<_Tp>::value - tuple_size<_Tp>::value, 0,
- tuple_size<_Tp>::value, _Tp, _Up>::__eq(__t, __u);
- }
-
- template<typename _T1, typename _T2, typename _T3, typename _T4, typename _T5,
- typename _T6, typename _T7, typename _T8, typename _T9, typename _T10,
- typename _U1, typename _U2, typename _U3, typename _U4, typename _U5,
- typename _U6, typename _U7, typename _U8, typename _U9, typename _U10>
- bool
- operator<(const tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10>& __t,
- const tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9, _U10>& __u)
- {
- typedef tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10> _Tp;
- typedef tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8,_U9, _U10> _Up;
- return __tuple_compare<tuple_size<_Tp>::value - tuple_size<_Tp>::value, 0,
- tuple_size<_Tp>::value, _Tp, _Up>::__less(__t, __u);
- }
-
- template<typename _T1, typename _T2, typename _T3, typename _T4, typename _T5,
- typename _T6, typename _T7, typename _T8, typename _T9, typename _T10,
- typename _U1, typename _U2, typename _U3, typename _U4, typename _U5,
- typename _U6, typename _U7, typename _U8, typename _U9, typename _U10>
- bool
- operator!=(const tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10>& __t,
- const tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9, _U10>& __u)
- { return !(__t == __u); }
-
- template<typename _T1, typename _T2, typename _T3, typename _T4, typename _T5,
- typename _T6, typename _T7, typename _T8, typename _T9, typename _T10,
- typename _U1, typename _U2, typename _U3, typename _U4, typename _U5,
- typename _U6, typename _U7, typename _U8, typename _U9, typename _U10>
- bool
- operator>(const tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10>& __t,
- const tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9, _U10>& __u)
- { return __u < __t; }
-
- template<typename _T1, typename _T2, typename _T3, typename _T4, typename _T5,
- typename _T6, typename _T7, typename _T8, typename _T9, typename _T10,
- typename _U1, typename _U2, typename _U3, typename _U4, typename _U5,
- typename _U6, typename _U7, typename _U8, typename _U9, typename _U10>
- bool
- operator<=(const tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10>& __t,
- const tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9, _U10>& __u)
- { return !(__u < __t); }
-
- template<typename _T1, typename _T2, typename _T3, typename _T4, typename _T5,
- typename _T6, typename _T7, typename _T8, typename _T9, typename _T10,
- typename _U1, typename _U2, typename _U3, typename _U4, typename _U5,
- typename _U6, typename _U7, typename _U8, typename _U9, typename _U10>
- bool
- operator>=(const tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10>& __t,
- const tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9, _U10>& __u)
- { return !(__t < __u); }
-
- // Helper which adds a reference to a type when given a reference_wrapper
- template<typename _Tp>
- struct __strip_reference_wrapper
- {
- typedef _Tp __type;
- };
-
- template<typename _Tp>
- struct __strip_reference_wrapper<reference_wrapper<_Tp> >
- {
- typedef _Tp& __type;
- };
-
- template<typename _Tp>
- struct __strip_reference_wrapper<const reference_wrapper<_Tp> >
- {
- typedef _Tp& __type;
- };
-
- template<typename _Tp0 = _NullClass, typename _Tp1 = _NullClass,
- typename _Tp2 = _NullClass, typename _Tp3 = _NullClass,
- typename _Tp4 = _NullClass, typename _Tp5 = _NullClass,
- typename _Tp6 = _NullClass, typename _Tp7 = _NullClass,
- typename _Tp8 = _NullClass, typename _Tp9 = _NullClass>
- struct __stripped_tuple_type
- {
- typedef tuple<typename __strip_reference_wrapper<_Tp0>::__type,
- typename __strip_reference_wrapper<_Tp1>::__type,
- typename __strip_reference_wrapper<_Tp2>::__type,
- typename __strip_reference_wrapper<_Tp3>::__type,
- typename __strip_reference_wrapper<_Tp4>::__type,
- typename __strip_reference_wrapper<_Tp5>::__type,
- typename __strip_reference_wrapper<_Tp6>::__type,
- typename __strip_reference_wrapper<_Tp7>::__type,
- typename __strip_reference_wrapper<_Tp8>::__type,
- typename __strip_reference_wrapper<_Tp9>::__type> __type;
- };
-
// A class (and instance) which can be used in 'tie' when an element
// of a tuple is not required
struct swallow_assign
diff --git a/libstdc++-v3/include/tr1/tuple_defs.h b/libstdc++-v3/include/tr1/tuple_defs.h
new file mode 100644
index 00000000000..35a739ee4f8
--- /dev/null
+++ b/libstdc++-v3/include/tr1/tuple_defs.h
@@ -0,0 +1,108 @@
+// class template tuple -*- C++ -*-
+
+// Copyright (C) 2004, 2005 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 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.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+#ifndef _GLIBCXX_REPEAT_HEADER
+# define _GLIBCXX_REPEAT_HEADER "tuple_defs.h"
+# include "repeat.h"
+# undef _GLIBCXX_REPEAT_HEADER
+#endif
+
+#ifdef _GLIBCXX_LAST_INCLUDE
+// Chris Jefferson <chris@bubblescope.net>
+ template<_GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS> class tuple;
+
+ // Returns a const reference to the ith element of a tuple.
+ // Any const or non-const ref elements are returned with their original type.
+ template<int __i, _GLIBCXX_TEMPLATE_PARAMS>
+ typename __add_ref<typename tuple_element<__i, tuple<_GLIBCXX_TEMPLATE_ARGS> >::type>::type
+ get(tuple<_GLIBCXX_TEMPLATE_ARGS>& __t)
+ {
+ return __get_helper<__i, tuple<_GLIBCXX_TEMPLATE_ARGS> >::get_value(__t);
+ }
+
+ template<int __i, _GLIBCXX_TEMPLATE_PARAMS>
+ typename __add_c_ref<typename tuple_element<__i, tuple<_GLIBCXX_TEMPLATE_ARGS> >::type>::type
+ get(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t)
+ {
+ return __get_helper<__i, tuple<_GLIBCXX_TEMPLATE_ARGS> >::get_value(__t);
+ }
+
+ template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
+ bool
+ operator==(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
+ const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
+ {
+ typedef tuple<_GLIBCXX_TEMPLATE_ARGS> _Tp;
+ typedef tuple<_GLIBCXX_TEMPLATE_ARGS_U> _Up;
+ return __tuple_compare<tuple_size<_Tp>::value - tuple_size<_Tp>::value, 0,
+ tuple_size<_Tp>::value, _Tp, _Up>::__eq(__t, __u);
+ }
+
+ template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
+ bool
+ operator<(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
+ const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
+ {
+ typedef tuple<_GLIBCXX_TEMPLATE_ARGS> _Tp;
+ typedef tuple<_GLIBCXX_TEMPLATE_ARGS_U> _Up;
+ return __tuple_compare<tuple_size<_Tp>::value - tuple_size<_Tp>::value, 0,
+ tuple_size<_Tp>::value, _Tp, _Up>::__less(__t, __u);
+ }
+
+ template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
+ bool
+ operator!=(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
+ const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
+ { return !(__t == __u); }
+
+ template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
+ bool
+ operator>(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
+ const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
+ { return __u < __t; }
+
+ template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
+ bool
+ operator<=(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
+ const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
+ { return !(__u < __t); }
+
+ template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
+ bool
+ operator>=(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
+ const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
+ { return !(__t < __u); }
+
+ template<_GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS>
+ struct __stripped_tuple_type
+ {
+ typedef tuple<_GLIBCXX_TEMPLATE_ARGS_STRIPPED> __type;
+ };
+
+#endif
+
diff --git a/libstdc++-v3/include/tr1/tuple_iterate.h b/libstdc++-v3/include/tr1/tuple_iterate.h
index 320073bda52..8d575765818 100644
--- a/libstdc++-v3/include/tr1/tuple_iterate.h
+++ b/libstdc++-v3/include/tr1/tuple_iterate.h
@@ -108,8 +108,7 @@ template<_GLIBCXX_TEMPLATE_PARAMS>
template<int __i, typename __Type>
friend class __get_helper;
- template<typename, typename, typename, typename, typename,
- typename, typename, typename, typename, typename>
+ template<_GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS_UNNAMED>
friend class tuple;
};
@@ -130,12 +129,8 @@ template<typename _Tp>
};
/// @brief class tuple_element
-template<typename _T1, typename _T2, typename _T3, typename _T4,
- typename _T5, typename _T6, typename _T7, typename _T8,
- typename _T9, typename _T10>
- struct tuple_element<_GLIBCXX_NUM_ARGS, tuple<_T1, _T2, _T3, _T4,
- _T5, _T6, _T7, _T8, _T9,
- _T10> >
+template<_GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS>
+ struct tuple_element<_GLIBCXX_NUM_ARGS, tuple<_GLIBCXX_TUPLE_ALL_TEMPLATE_ARGS> >
{ typedef _GLIBCXX_T_NUM_ARGS_PLUS_1 type; };
#endif
diff --git a/libstdc++-v3/libmath/Makefile.in b/libstdc++-v3/libmath/Makefile.in
index 931d39d836d..799720c425b 100644
--- a/libstdc++-v3/libmath/Makefile.in
+++ b/libstdc++-v3/libmath/Makefile.in
@@ -42,6 +42,7 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/enable.m4 \
$(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
diff --git a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in
index 167ecd02398..9b2a0611ffc 100644
--- a/libstdc++-v3/libsupc++/Makefile.in
+++ b/libstdc++-v3/libsupc++/Makefile.in
@@ -44,6 +44,7 @@ subdir = libsupc++
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/enable.m4 \
$(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
diff --git a/libstdc++-v3/po/Makefile.in b/libstdc++-v3/po/Makefile.in
index 1157e33cbea..bb30735dceb 100644
--- a/libstdc++-v3/po/Makefile.in
+++ b/libstdc++-v3/po/Makefile.in
@@ -42,6 +42,7 @@ subdir = po
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/enable.m4 \
$(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
diff --git a/libstdc++-v3/scripts/gen_includers.pl b/libstdc++-v3/scripts/gen_includers.pl
index bfc3a7ec59d..477f028408f 100644
--- a/libstdc++-v3/scripts/gen_includers.pl
+++ b/libstdc++-v3/scripts/gen_includers.pl
@@ -4,6 +4,7 @@ use English;
$max = shift @ARGV;
$template_params = "typename _T1";
+$template_params_unnamed = "typename";
$template_args = "_T1";
$params = "_T1 __a1";
$ref_params = "_T1& __a1";
@@ -16,6 +17,8 @@ $bind_v_args = "_Mu<_T1>()(_M_arg1, ::std::tr1::tie(_GLIBCXX_BIND_ARGS))";
$tuple_add_cref = "typename __add_c_ref<_T1>::type __a1";
$tuple_copy_init = "_M_arg1(__in._M_arg1)";
$tuple_assign = "_M_arg1 = __in._M_arg1;";
+$template_params_null_class = "typename _T1 = _NullClass";
+$template_args_stripped = "typename __strip_reference_wrapper<_T1>::__type";
$template_params_u = "typename _U1";
$template_args_u = "_U1";
$ref_wrap_params = "ref(__a1)";
@@ -28,6 +31,7 @@ for ($num_args = 2; $num_args <= $max; ++$num_args) {
$params_shifted = $params;
$args_shifted = $args;
$template_params .= ", typename _T$num_args";
+ $template_params_unnamed .= ", typename";
$template_args .= ", _T$num_args";
$params .= ", _T$num_args __a$num_args";
$ref_params .=", _T$num_args& __a$num_args";
@@ -40,11 +44,16 @@ for ($num_args = 2; $num_args <= $max; ++$num_args) {
$tuple_add_cref .= ", typename __add_c_ref<_T$num_args>::type __a$num_args";
$tuple_copy_init .= ", _M_arg$num_args(__in._M_arg$num_args)";
$tuple_assign .= " _M_arg$num_args = __in._M_arg$num_args;";
+ $template_params_null_class .= ", typename _T$num_args = _NullClass";
+ $template_args_stripped .= ", typename __strip_reference_wrapper<_T$num_args>::__type";
$template_params_u .= ", typename _U$num_args";
$template_args_u .= ", _U$num_args";
$ref_wrap_params .= ", ref(__a$num_args)";
$ref_template_args .= ", _T$num_args&";
+ if ($num_args == $max) {
+ print "#define _GLIBCXX_LAST_INCLUDE\n"
+ }
print "#define _GLIBCXX_NUM_ARGS $num_args\n";
print "#define _GLIBCXX_COMMA ,\n";
print "#define _GLIBCXX_TEMPLATE_PARAMS $template_params\n";
@@ -65,25 +74,23 @@ for ($num_args = 2; $num_args <= $max; ++$num_args) {
print "#define _GLIBCXX_TUPLE_ADD_CREF $tuple_add_cref\n";
print "#define _GLIBCXX_TUPLE_COPY_INIT $tuple_copy_init\n";
print "#define _GLIBCXX_TUPLE_ASSIGN $tuple_assign\n";
+ print "#define _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS $template_params_null_class\n";
+ print "#define _GLIBCXX_TEMPLATE_ARGS_STRIPPED $template_args_stripped\n";
print "#define _GLIBCXX_TEMPLATE_PARAMS_U $template_params_u\n";
print "#define _GLIBCXX_TEMPLATE_ARGS_U $template_args_u\n";
print "#define _GLIBCXX_REF_WRAP_PARAMS $ref_wrap_params\n";
print "#define _GLIBCXX_REF_TEMPLATE_ARGS $ref_template_args\n";
print "#define _GLIBCXX_NUM_ARGS_PLUS_1 $next_args\n";
print "#define _GLIBCXX_T_NUM_ARGS_PLUS_1 _T$next_args\n";
- if ($num_args == $max) {
- print "#define _GLIBCXX_LAST_INCLUDE\n"
- }
print "#include _GLIBCXX_REPEAT_HEADER\n";
- if ($num_args == $max) {
- print "#undef _GLIBCXX_LAST_INCLUDE\n"
- }
print "#undef _GLIBCXX_T_NUM_ARGS_PLUS_1\n";
print "#undef _GLIBCXX_NUM_ARGS_PLUS_1\n";
print "#undef _GLIBCXX_REF_TEMPLATE_ARGS\n";
print "#undef _GLIBCXX_REF_WRAP_PARAMS\n";
print "#undef _GLIBCXX_TEMPLATE_ARGS_U\n";
print "#undef _GLIBCXX_TEMPLATE_PARAMS_U\n";
+ print "#undef _GLIBCXX_TEMPLATE_ARGS_STRIPPED\n";
+ print "#undef _GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS\n";
print "#undef _GLIBCXX_TUPLE_ASSIGN\n";
print "#undef _GLIBCXX_TUPLE_COPY_INIT\n";
print "#undef _GLIBCXX_TUPLE_ADD_CREF\n";
@@ -104,5 +111,16 @@ for ($num_args = 2; $num_args <= $max; ++$num_args) {
print "#undef _GLIBCXX_TEMPLATE_PARAMS\n";
print "#undef _GLIBCXX_COMMA\n";
print "#undef _GLIBCXX_NUM_ARGS\n";
- print "\n";
+ if ($num_args == $max) {
+ print "#undef _GLIBCXX_LAST_INCLUDE\n"
+ }
}
+
+print "\n";
+print "#ifndef _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS\n";
+print "# define _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS $template_params\n";
+print "# define _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS_UNNAMED $template_params_unnamed\n";
+print "# define _GLIBCXX_TUPLE_ALL_TEMPLATE_ARGS $template_args\n";
+print "#endif\n";
+print "\n";
+
diff --git a/libstdc++-v3/scripts/gen_includers2.pl b/libstdc++-v3/scripts/gen_includers2.pl
new file mode 100644
index 00000000000..88e9becd1a4
--- /dev/null
+++ b/libstdc++-v3/scripts/gen_includers2.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl -w
+use English;
+
+$max = shift @ARGV;
+
+$template_params = "typename _U1";
+$template_args = "_U1";
+$params = "_U1& __u1";
+$args = "__u1";
+
+for ($num_args = 2; $num_args <= $max; ++$num_args) {
+ $template_params .= ", typename _U$num_args";
+ $template_args .= ", _U$num_args";
+ $params .= ", _U$num_args& __u$num_args";
+ $args .= ", __u$num_args";
+ print "#define _GLIBCXX_BIND_NUM_ARGS $num_args\n";
+ print "#define _GLIBCXX_BIND_COMMA ,\n";
+ print "#define _GLIBCXX_BIND_TEMPLATE_PARAMS $template_params\n";
+ print "#define _GLIBCXX_BIND_TEMPLATE_ARGS $template_args\n";
+ print "#define _GLIBCXX_BIND_PARAMS $params\n";
+ print "#define _GLIBCXX_BIND_ARGS $args\n";
+ print "#include _GLIBCXX_BIND_REPEAT_HEADER\n";
+ print "#undef _GLIBCXX_BIND_ARGS\n";
+ print "#undef _GLIBCXX_BIND_PARAMS\n";
+ print "#undef _GLIBCXX_BIND_TEMPLATE_ARGS\n";
+ print "#undef _GLIBCXX_BIND_TEMPLATE_PARAMS\n";
+ print "#undef _GLIBCXX_BIND_COMMA\n";
+ print "#undef _GLIBCXX_BIND_NUM_ARGS\n";
+ print "\n";
+}
+
diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
index 34b86e33285..6000d2167fa 100644
--- a/libstdc++-v3/src/Makefile.in
+++ b/libstdc++-v3/src/Makefile.in
@@ -42,6 +42,7 @@ subdir = src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/enable.m4 \
$(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
diff --git a/libstdc++-v3/testsuite/Makefile.in b/libstdc++-v3/testsuite/Makefile.in
index 6ec17fd1cb8..6f443ec1745 100644
--- a/libstdc++-v3/testsuite/Makefile.in
+++ b/libstdc++-v3/testsuite/Makefile.in
@@ -42,6 +42,7 @@ subdir = testsuite
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/enable.m4 \
$(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \