This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[libstdc++ patch] TR1 reference_wrapper invocation, base classes
- From: Douglas Gregor <doug dot gregor at gmail dot com>
- To: "libstdc++" <libstdc++ at gcc dot gnu dot org>,gcc-patches at gcc dot gnu dot org
- Date: Mon, 28 Feb 2005 10:08:10 -0500
- Subject: [libstdc++ patch] TR1 reference_wrapper invocation, base classes
This patch adds support for reference_wrapper invocation and introduces the
right base classes and typedefs for reference_wrapper. It builds on (but does
not include) the result_of patch I sent previously
(http://gcc.gnu.org/ml/libstdc++/2005-02/msg00250.html) and fixes one bug in
that patch: result_of did not do the right thing for member data pointers,
but now it does.
The repetition code in tr1/functional that includes tr1/functional_iterate.h
many times has been moved into tr1/repeat.h, because it is needed for files
other than tr1/functional_iterate.h; you now define a macro
(_GLIBCXX_REPEAT_HEADER) and include tr1/repeat.h when you need to repeat
code.
There is a _lot_ of metaprogramming in this patch; much more so than I had
expected, and that makes the code a little bit hairy. There are two major
complicating factors:
(1) reference_wrapper<T> derives from unary_function and/or binary_function
when possible. This happens when the type T is a free or member function
pointer, function type, or class type derived from unary_function and/or
binary_function. I've tried to document all of the metaprogramming I had to
do to get those right, and included the tricky test cases I could think of.
(2) reference_wrapper<T>::operator() has to deal with invoking member
pointers (by wrapping in mem_fn), function objects, and function references.
There is some SFINAE/enable_if magic in the __invoke function to decide
between these options.
There are a few other trivial changes:
- Shortened long lines
- Fixed typos and an incorrect e-mail address in some headers/tests
Tested on i686-pc-linux-gnu with no failures. ChangeLog below.
Ok?
Doug
2005-02-28 Douglas Gregor <doug.gregor@gmail.com>
* include/tr1/functional (_Has_result_type): Cleanup.
(_Result_of_impl): Handle member data pointers correctly.
(reference_wrapper): Support invocation.
Move repetition code into new file include/tr1/repeat.h.
* include/tr1/functional_iterate.h (reference_wrapper): Support
invocation. Cleanup long lines.
* include/tr1/ref_wrap_iterate.h (reference_wrapper): Declare
invocation operators.
* include/tr1/repeat.h: Code repetition header.
* include/Makefile.am: Add ref_wrap_iterate.h, repeat.h
* include/Makefile.in: Add ref_wrap_iterate.h, repeat.h
* testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc:
New test of reference_wrapper invocation.
* testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc:
New test of reference_wrapper typedefs and base classes.
* testsuite/tr1/3_function_objects/result_of.cc: Trivial cleanup
(e-mail address).
diff -cpNbr --exclude=CVS /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/include/Makefile.am ./include/Makefile.am
*** /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/include/Makefile.am Sun Feb 27 17:21:26 2005
--- ./include/Makefile.am Mon Feb 28 08:30:10 2005
*************** tr1_headers = \
*** 231,236 ****
--- 231,238 ----
${tr1_srcdir}/functional \
${tr1_srcdir}/functional_iterate.h \
${tr1_srcdir}/memory \
+ ${tr1_srcdir}/ref_wrap_iterate.h \
+ ${tr1_srcdir}/repeat.h \
${tr1_srcdir}/tuple \
${tr1_srcdir}/utility \
${tr1_srcdir}/type_traits \
diff -cpNbr --exclude=CVS /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/include/Makefile.in ./include/Makefile.in
*** /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/include/Makefile.in Sun Feb 27 17:21:26 2005
--- ./include/Makefile.in Mon Feb 28 08:30:23 2005
*************** tr1_headers = \
*** 447,452 ****
--- 447,454 ----
${tr1_srcdir}/functional \
${tr1_srcdir}/functional_iterate.h \
${tr1_srcdir}/memory \
+ ${tr1_srcdir}/ref_wrap_iterate.h \
+ ${tr1_srcdir}/repeat.h \
${tr1_srcdir}/tuple \
${tr1_srcdir}/utility \
${tr1_srcdir}/type_traits \
diff -cpNbr --exclude=CVS /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/include/tr1/functional ./include/tr1/functional
*** /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/include/tr1/functional Mon Feb 28 09:31:14 2005
--- ./include/tr1/functional Mon Feb 28 08:34:09 2005
*************** namespace std
*** 45,50 ****
--- 45,53 ----
{
namespace tr1
{
+ template<typename _MemberPointer>
+ class _Mem_fn;
+
/**
* @if maint
* Actual implementation of _Has_result_type, which uses SFINAE to
*************** namespace tr1
*** 53,80 ****
* @endif
*/
template<typename _Tp>
! class _Has_result_type_helper
{
template<typename _Up>
struct _Wrap_type
{ };
template<typename _Up>
! static __sfinae_types::__one
! __test(_Wrap_type<typename _Up::result_type>*);
template<typename _Up>
! static __sfinae_types::__two __test(...);
public:
! static const bool __value = sizeof(__test<_Tp>(0)) == 1;
};
template<typename _Tp>
struct _Has_result_type
: integral_constant<
bool,
! _Has_result_type_helper<typename remove_cv<_Tp>::type>::__value>
{ };
/**
--- 56,82 ----
* @endif
*/
template<typename _Tp>
! class _Has_result_type_helper : __sfinae_types
{
template<typename _Up>
struct _Wrap_type
{ };
template<typename _Up>
! static __one __test(_Wrap_type<typename _Up::result_type>*);
template<typename _Up>
! static __two __test(...);
public:
! static const bool value = sizeof(__test<_Tp>(0)) == 1;
};
template<typename _Tp>
struct _Has_result_type
: integral_constant<
bool,
! _Has_result_type_helper<typename remove_cv<_Tp>::type>::value>
{ };
/**
*************** namespace tr1
*** 130,138 ****
--- 132,343 ----
template<bool _Has_result_type, typename _Signature>
struct _Result_of_impl;
+ // Handle member data pointers using _Mem_fn's logic
+ template<typename _Res, typename _Class, typename _T1>
+ struct _Result_of_impl<false, _Res _Class::*(_T1)>
+ {
+ typedef typename _Mem_fn<_Res _Class::*>
+ ::template _Result_type<_T1>::type type;
+ };
+
+ /**
+ * @if maint
+ * Determines if the type _Tp derives from unary_function.
+ * @endif
+ */
+ template<typename _Tp>
+ struct _Derives_from_unary_function : __sfinae_types
+ {
+ private:
+ template<typename _T1, typename _Res>
+ static __one __test(const volatile unary_function<_T1, _Res>*);
+
+ // It's tempting to change "..." to const volatile void*, but
+ // that fails when _Tp is a function type.
+ static __two __test(...);
+
+ public:
+ static const bool value = sizeof(__test((_Tp*)0)) == 1;
+ };
+
+ /**
+ * @if maint
+ * Determines if the type _Tp derives from binary_function.
+ * @endif
+ */
+ template<typename _Tp>
+ struct _Derives_from_binary_function : __sfinae_types
+ {
+ private:
+ template<typename _T1, typename _T2, typename _Res>
+ static __one __test(const volatile binary_function<_T1, _T2, _Res>*);
+
+ // It's tempting to change "..." to const volatile void*, but
+ // that fails when _Tp is a function type.
+ static __two __test(...);
+
+ public:
+ static const bool value = sizeof(__test((_Tp*)0)) == 1;
+ };
+
+ /**
+ * @if maint
+ * Turns a function type into a function pointer type
+ * @endif
+ */
+ template<typename _Tp, bool _IsFunctionType = is_function<_Tp>::value>
+ struct _Function_to_function_pointer
+ {
+ typedef _Tp type;
+ };
+
+ template<typename _Tp>
+ struct _Function_to_function_pointer<_Tp, true>
+ {
+ typedef _Tp* type;
+ };
+
+ /**
+ * @if maint
+ * Knowing which of unary_function and binary_function _Tp derives
+ * from, derives from the same and ensures that reference_wrapper
+ * will have a weak result type. See cases below.
+ * @endif
+ */
+ template<bool _Unary, bool _Binary, typename _Tp>
+ struct _Reference_wrapper_base_impl;
+
+ // Not a unary_function or binary_function, so try a weak result type
+ template<typename _Tp>
+ struct _Reference_wrapper_base_impl<false, false, _Tp>
+ : _Weak_result_type<_Tp>
+ { };
+
+ // unary_function but not binary_function
+ template<typename _Tp>
+ struct _Reference_wrapper_base_impl<true, false, _Tp>
+ : unary_function<typename _Tp::argument_type,
+ typename _Tp::result_type>
+ { };
+
+ // binary_function but not unary_function
+ template<typename _Tp>
+ struct _Reference_wrapper_base_impl<false, true, _Tp>
+ : binary_function<typename _Tp::first_argument_type,
+ typename _Tp::second_argument_type,
+ typename _Tp::result_type>
+ { };
+
+ // both unary_function and binary_function. import result_type to
+ // avoid conflicts.
+ template<typename _Tp>
+ struct _Reference_wrapper_base_impl<true, true, _Tp>
+ : unary_function<typename _Tp::argument_type,
+ typename _Tp::result_type>,
+ binary_function<typename _Tp::first_argument_type,
+ typename _Tp::second_argument_type,
+ typename _Tp::result_type>
+ {
+ typedef typename _Tp::result_type result_type;
+ };
+
+ /**
+ * @if maint
+ * Derives from unary_function or binary_function when it
+ * can. Specializations handle all of the easy cases. The primary
+ * template determines what to do with a class type, which may
+ * derive from both unary_function and binary_function.
+ * @endif
+ */
+ template<typename _Tp>
+ struct _Reference_wrapper_base
+ : _Reference_wrapper_base_impl<
+ _Derives_from_unary_function<_Tp>::value,
+ _Derives_from_binary_function<_Tp>::value,
+ _Tp>
+ { };
+
+ // - a function type (unary)
+ template<typename _Res, typename _T1>
+ struct _Reference_wrapper_base<_Res(_T1)>
+ : unary_function<_T1, _Res>
+ { };
+
+ // - a function type (binary)
+ template<typename _Res, typename _T1, typename _T2>
+ struct _Reference_wrapper_base<_Res(_T1, _T2)>
+ : binary_function<_T1, _T2, _Res>
+ { };
+
+ // - a function pointer type (unary)
+ template<typename _Res, typename _T1>
+ struct _Reference_wrapper_base<_Res(*)(_T1)>
+ : unary_function<_T1, _Res>
+ { };
+
+ // - a function pointer type (binary)
+ template<typename _Res, typename _T1, typename _T2>
+ struct _Reference_wrapper_base<_Res(*)(_T1, _T2)>
+ : binary_function<_T1, _T2, _Res>
+ { };
+
+ // - a pointer to member function type (unary, no qualifiers)
+ template<typename _Res, typename _T1>
+ struct _Reference_wrapper_base<_Res (_T1::*)()>
+ : unary_function<_T1*, _Res>
+ { };
+
+ // - a pointer to member function type (binary, no qualifiers)
+ template<typename _Res, typename _T1, typename _T2>
+ struct _Reference_wrapper_base<_Res (_T1::*)(_T2)>
+ : binary_function<_T1*, _T2, _Res>
+ { };
+
+ // - a pointer to member function type (unary, const)
+ template<typename _Res, typename _T1>
+ struct _Reference_wrapper_base<_Res (_T1::*)() const>
+ : unary_function<const _T1*, _Res>
+ { };
+
+ // - a pointer to member function type (binary, const)
+ template<typename _Res, typename _T1, typename _T2>
+ struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const>
+ : binary_function<const _T1*, _T2, _Res>
+ { };
+
+ // - a pointer to member function type (unary, volatile)
+ template<typename _Res, typename _T1>
+ struct _Reference_wrapper_base<_Res (_T1::*)() volatile>
+ : unary_function<volatile _T1*, _Res>
+ { };
+
+ // - a pointer to member function type (binary, volatile)
+ template<typename _Res, typename _T1, typename _T2>
+ struct _Reference_wrapper_base<_Res (_T1::*)(_T2) volatile>
+ : binary_function<volatile _T1*, _T2, _Res>
+ { };
+
+ // - a pointer to member function type (unary, const volatile)
+ template<typename _Res, typename _T1>
+ struct _Reference_wrapper_base<_Res (_T1::*)() const volatile>
+ : unary_function<const volatile _T1*, _Res>
+ { };
+
+ // - a pointer to member function type (binary, const volatile)
+ template<typename _Res, typename _T1, typename _T2>
+ struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const volatile>
+ : binary_function<const volatile _T1*, _T2, _Res>
+ { };
+
template<typename _Tp>
class reference_wrapper
+ : public _Reference_wrapper_base<typename remove_cv<_Tp>::type>
{
+ // If _Tp is a function type, we can't form result_of<_Tp(...)>,
+ // so turn it into a function pointer type.
+ typedef typename _Function_to_function_pointer<_Tp>::type
+ _M_func_type;
+
_Tp* _M_data;
public:
typedef _Tp type;
*************** namespace tr1
*** 156,163 ****
--- 361,373 ----
_Tp&
get() const
{ return *_M_data; }
+
+ #define _GLIBCXX_REPEAT_HEADER <tr1/ref_wrap_iterate.h>
+ #include <tr1/repeat.h>
+ #undef _GLIBCXX_REPEAT_HEADER
};
+
// Denotes a reference should be taken to a variable.
template<typename _Tp>
reference_wrapper<_Tp>
*************** namespace tr1
*** 178,186 ****
reference_wrapper<const _Tp> cref(reference_wrapper<_Tp> __t)
{ return cref(__t.get()); }
- template<typename _MemberPointer>
- class _Mem_fn;
-
template<typename _Tp, bool>
struct _Mem_fn_const_or_non
{
--- 388,393 ----
*************** namespace tr1
*** 236,241 ****
--- 443,449 ----
template<typename _Tp>
static __sfinae_types::__two __check_const(_Tp&, const volatile void*);
+ public:
template<typename _Tp>
struct _Result_type
: _Mem_fn_const_or_non<
*************** namespace tr1
*** 244,250 ****
== sizeof(__check_const<_Tp>(__get_ref<_Tp>(), (_Tp*)0)))>
{ };
- public:
explicit _Mem_fn(_Res _Class::*__pm) : __pm(__pm) { }
// Handle objects
--- 452,457 ----
*************** namespace tr1
*** 574,1083 ****
_Manager_type _M_manager;
};
- #define _GLIBCXX_NUM_ARGS 0
- #define _GLIBCXX_COMMA
- #define _GLIBCXX_TEMPLATE_PARAMS
- #define _GLIBCXX_TEMPLATE_ARGS
- #define _GLIBCXX_PARAMS
- #define _GLIBCXX_ARGS
- #define _GLIBCXX_COMMA_SHIFTED
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #define _GLIBCXX_PARAMS_SHIFTED
- #define _GLIBCXX_ARGS_SHIFTED
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #undef _GLIBCXX_TEMPLATE_PARAMS
- #undef _GLIBCXX_COMMA
- #undef _GLIBCXX_NUM_ARGS
-
- #define _GLIBCXX_NUM_ARGS 1
- #define _GLIBCXX_COMMA ,
- #define _GLIBCXX_TEMPLATE_PARAMS typename _T1
- #define _GLIBCXX_TEMPLATE_ARGS _T1
- #define _GLIBCXX_PARAMS _T1 __a1
- #define _GLIBCXX_ARGS __a1
- #define _GLIBCXX_COMMA_SHIFTED
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #define _GLIBCXX_PARAMS_SHIFTED
- #define _GLIBCXX_ARGS_SHIFTED
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #undef _GLIBCXX_TEMPLATE_PARAMS
- #undef _GLIBCXX_COMMA
- #undef _GLIBCXX_NUM_ARGS
-
- #define _GLIBCXX_NUM_ARGS 2
- #define _GLIBCXX_COMMA ,
- #define _GLIBCXX_TEMPLATE_PARAMS typename _T1, typename _T2
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2
- #define _GLIBCXX_ARGS __a1, __a2
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1
- #define _GLIBCXX_ARGS_SHIFTED __a1
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #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
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3
- #define _GLIBCXX_ARGS __a1, __a2, __a3
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #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
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #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
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #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
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #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
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #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
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #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
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #undef _GLIBCXX_TEMPLATE_PARAMS
- #undef _GLIBCXX_COMMA
- #undef _GLIBCXX_NUM_ARGS
-
- #define _GLIBCXX_NUM_ARGS 10
- #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, typename _T10
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #undef _GLIBCXX_TEMPLATE_PARAMS
- #undef _GLIBCXX_COMMA
- #undef _GLIBCXX_NUM_ARGS
-
- #define _GLIBCXX_NUM_ARGS 11
- #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, typename _T10, typename _T11
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #undef _GLIBCXX_TEMPLATE_PARAMS
- #undef _GLIBCXX_COMMA
- #undef _GLIBCXX_NUM_ARGS
-
- #define _GLIBCXX_NUM_ARGS 12
- #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, typename _T10, typename _T11, typename _T12
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #undef _GLIBCXX_TEMPLATE_PARAMS
- #undef _GLIBCXX_COMMA
- #undef _GLIBCXX_NUM_ARGS
-
- #define _GLIBCXX_NUM_ARGS 13
- #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, typename _T10, typename _T11, typename _T12, typename _T13
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #undef _GLIBCXX_TEMPLATE_PARAMS
- #undef _GLIBCXX_COMMA
- #undef _GLIBCXX_NUM_ARGS
-
- #define _GLIBCXX_NUM_ARGS 14
- #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, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #undef _GLIBCXX_TEMPLATE_PARAMS
- #undef _GLIBCXX_COMMA
- #undef _GLIBCXX_NUM_ARGS
-
- #define _GLIBCXX_NUM_ARGS 15
- #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, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #undef _GLIBCXX_TEMPLATE_PARAMS
- #undef _GLIBCXX_COMMA
- #undef _GLIBCXX_NUM_ARGS
-
- #define _GLIBCXX_NUM_ARGS 16
- #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, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #undef _GLIBCXX_TEMPLATE_PARAMS
- #undef _GLIBCXX_COMMA
- #undef _GLIBCXX_NUM_ARGS
-
- #define _GLIBCXX_NUM_ARGS 17
- #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, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16, _T17 __a17
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16, __a17
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #undef _GLIBCXX_TEMPLATE_PARAMS
- #undef _GLIBCXX_COMMA
- #undef _GLIBCXX_NUM_ARGS
-
- #define _GLIBCXX_NUM_ARGS 18
- #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, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16, _T17 __a17, _T18 __a18
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16, __a17, __a18
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16, _T17 __a17
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16, __a17
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #undef _GLIBCXX_TEMPLATE_PARAMS
- #undef _GLIBCXX_COMMA
- #undef _GLIBCXX_NUM_ARGS
-
- #define _GLIBCXX_NUM_ARGS 19
- #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, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18, typename _T19
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18, _T19
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16, _T17 __a17, _T18 __a18, _T19 __a19
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16, __a17, __a18, __a19
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16, _T17 __a17, _T18 __a18
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16, __a17, __a18
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #undef _GLIBCXX_TEMPLATE_PARAMS
- #undef _GLIBCXX_COMMA
- #undef _GLIBCXX_NUM_ARGS
-
- #define _GLIBCXX_NUM_ARGS 20
- #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, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18, typename _T19, typename _T20
- #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18, _T19, _T20
- #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16, _T17 __a17, _T18 __a18, _T19 __a19, _T20 __a20
- #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16, __a17, __a18, __a19, __a20
- #define _GLIBCXX_COMMA_SHIFTED ,
- #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18, typename _T19
- #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18, _T19
- #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16, _T17 __a17, _T18 __a18, _T19 __a19
- #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16, __a17, __a18, __a19
- #include <tr1/functional_iterate.h>
- #undef _GLIBCXX_ARGS_SHIFTED
- #undef _GLIBCXX_PARAMS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
- #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
- #undef _GLIBCXX_COMMA_SHIFTED
- #undef _GLIBCXX_ARGS
- #undef _GLIBCXX_PARAMS
- #undef _GLIBCXX_TEMPLATE_ARGS
- #undef _GLIBCXX_TEMPLATE_PARAMS
- #undef _GLIBCXX_COMMA
- #undef _GLIBCXX_NUM_ARGS
-
// [3.7.2.7] null pointer comparisons
/**
--- 781,786 ----
*************** namespace tr1
*** 1142,1147 ****
--- 845,853 ----
__x.swap(__y);
}
+ #define _GLIBCXX_REPEAT_HEADER <tr1/functional_iterate.h>
+ #include <tr1/repeat.h>
+ #undef _GLIBCXX_REPEAT_HEADER
// Definition of default hash function std::tr1::hash<>. The types for
// which std::tr1::hash<T> is defined is in clause 6.3.3. of the PDTR.
diff -cpNbr --exclude=CVS /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/include/tr1/functional_iterate.h ./include/tr1/functional_iterate.h
*** /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/include/tr1/functional_iterate.h Mon Feb 28 09:31:14 2005
--- ./include/tr1/functional_iterate.h Mon Feb 28 09:40:06 2005
***************
*** 1,7 ****
// TR1 functional -*- C++ -*-
// Copyright (C) 2005 Free Software Foundation, Inc.
! // Writtten by Douglas Gregor <dgregor@cs.indiana.edu>
//
// 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
--- 1,7 ----
// TR1 functional -*- C++ -*-
// Copyright (C) 2005 Free Software Foundation, Inc.
! // Written by Douglas Gregor <doug.gregor -at- gmail.com>
//
// 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
*************** template<typename _Res _GLIBCXX_COMMA _G
*** 54,81 ****
#if _GLIBCXX_NUM_ARGS > 0
template<typename _Res, typename _Class _GLIBCXX_COMMA_SHIFTED
_GLIBCXX_TEMPLATE_PARAMS_SHIFTED>
! struct _Weak_result_type_impl<_Res (_Class::*)(_GLIBCXX_TEMPLATE_ARGS_SHIFTED)>
{
typedef _Res result_type;
};
template<typename _Res, typename _Class _GLIBCXX_COMMA_SHIFTED
_GLIBCXX_TEMPLATE_PARAMS_SHIFTED>
! struct _Weak_result_type_impl<_Res (_Class::*)(_GLIBCXX_TEMPLATE_ARGS_SHIFTED) const>
{
typedef _Res result_type;
};
template<typename _Res, typename _Class _GLIBCXX_COMMA_SHIFTED
_GLIBCXX_TEMPLATE_PARAMS_SHIFTED>
! struct _Weak_result_type_impl<_Res (_Class::*)(_GLIBCXX_TEMPLATE_ARGS_SHIFTED) volatile>
{
typedef _Res result_type;
};
template<typename _Res, typename _Class _GLIBCXX_COMMA_SHIFTED
_GLIBCXX_TEMPLATE_PARAMS_SHIFTED>
! struct _Weak_result_type_impl<_Res (_Class::*)(_GLIBCXX_TEMPLATE_ARGS_SHIFTED) const volatile>
{
typedef _Res result_type;
};
--- 54,85 ----
#if _GLIBCXX_NUM_ARGS > 0
template<typename _Res, typename _Class _GLIBCXX_COMMA_SHIFTED
_GLIBCXX_TEMPLATE_PARAMS_SHIFTED>
! struct _Weak_result_type_impl<
! _Res (_Class::*)(_GLIBCXX_TEMPLATE_ARGS_SHIFTED)>
{
typedef _Res result_type;
};
template<typename _Res, typename _Class _GLIBCXX_COMMA_SHIFTED
_GLIBCXX_TEMPLATE_PARAMS_SHIFTED>
! struct _Weak_result_type_impl<
! _Res (_Class::*)(_GLIBCXX_TEMPLATE_ARGS_SHIFTED) const>
{
typedef _Res result_type;
};
template<typename _Res, typename _Class _GLIBCXX_COMMA_SHIFTED
_GLIBCXX_TEMPLATE_PARAMS_SHIFTED>
! struct _Weak_result_type_impl<
! _Res (_Class::*)(_GLIBCXX_TEMPLATE_ARGS_SHIFTED) volatile>
{
typedef _Res result_type;
};
template<typename _Res, typename _Class _GLIBCXX_COMMA_SHIFTED
_GLIBCXX_TEMPLATE_PARAMS_SHIFTED>
! struct _Weak_result_type_impl<
! _Res (_Class::*)(_GLIBCXX_TEMPLATE_ARGS_SHIFTED) const volatile>
{
typedef _Res result_type;
};
*************** template<typename _Functor _GLIBCXX_COMM
*** 98,109 ****
struct _Result_of_impl<false, _Functor(_GLIBCXX_TEMPLATE_ARGS)>
{
#if _GLIBCXX_NUM_ARGS > 0
! typedef typename _Functor::template result<_Functor(_GLIBCXX_TEMPLATE_ARGS)>::type type;
#else
typedef void type;
#endif
};
#if _GLIBCXX_NUM_ARGS > 0
template<typename _Res, typename _Class _GLIBCXX_COMMA_SHIFTED
_GLIBCXX_TEMPLATE_PARAMS_SHIFTED>
--- 102,177 ----
struct _Result_of_impl<false, _Functor(_GLIBCXX_TEMPLATE_ARGS)>
{
#if _GLIBCXX_NUM_ARGS > 0
! typedef typename _Functor
! ::template result<_Functor(_GLIBCXX_TEMPLATE_ARGS)>::type type;
#else
typedef void type;
#endif
};
+ /**
+ * @if maint
+ * Invoke a function object, which may be either a member pointer or a
+ * function object. The first parameter will tell which.
+ * @endif
+ */
+ template<typename _Functor _GLIBCXX_COMMA _GLIBCXX_TEMPLATE_PARAMS>
+ inline
+ typename __enable_if<
+ typename result_of<_Functor(_GLIBCXX_TEMPLATE_ARGS)>::type,
+ (!is_member_pointer<_Functor>::value
+ && !is_function<_Functor>::value
+ && !is_function<typename remove_pointer<_Functor>::type>::value)
+ >::__type
+ __invoke(_Functor& __f _GLIBCXX_COMMA _GLIBCXX_REF_PARAMS)
+ {
+ return __f(_GLIBCXX_ARGS);
+ }
+
+ #if _GLIBCXX_NUM_ARGS > 0
+ template<typename _Functor _GLIBCXX_COMMA _GLIBCXX_TEMPLATE_PARAMS>
+ inline
+ typename __enable_if<
+ typename result_of<_Functor(_GLIBCXX_TEMPLATE_ARGS)>::type,
+ (is_member_pointer<_Functor>::value
+ && !is_function<_Functor>::value
+ && !is_function<typename remove_pointer<_Functor>::type>::value)
+ >::__type
+ __invoke(_Functor& __f _GLIBCXX_COMMA _GLIBCXX_REF_PARAMS)
+ {
+ return mem_fn(__f)(_GLIBCXX_ARGS);
+ }
+ #endif
+
+ // To pick up function references (that will become function pointers)
+ template<typename _Functor _GLIBCXX_COMMA _GLIBCXX_TEMPLATE_PARAMS>
+ inline
+ typename __enable_if<
+ typename result_of<_Functor(_GLIBCXX_TEMPLATE_ARGS)>::type,
+ (is_pointer<_Functor>::value
+ && is_function<typename remove_pointer<_Functor>::type>::value)
+ >::__type
+ __invoke(_Functor __f _GLIBCXX_COMMA _GLIBCXX_REF_PARAMS)
+ {
+ return __f(_GLIBCXX_ARGS);
+ }
+
+ /**
+ * @if maint
+ * Implementation of reference_wrapper::operator()
+ * @endif
+ */
+ #if _GLIBCXX_NUM_ARGS > 0
+ template<typename _Tp>
+ template<_GLIBCXX_TEMPLATE_PARAMS>
+ typename result_of<
+ typename reference_wrapper<_Tp>::_M_func_type(_GLIBCXX_TEMPLATE_ARGS)>::type
+ reference_wrapper<_Tp>::operator()(_GLIBCXX_REF_PARAMS) const
+ {
+ return __invoke(get(), _GLIBCXX_ARGS);
+ }
+ #endif
+
#if _GLIBCXX_NUM_ARGS > 0
template<typename _Res, typename _Class _GLIBCXX_COMMA_SHIFTED
_GLIBCXX_TEMPLATE_PARAMS_SHIFTED>
*************** template<typename _Res, typename _Class
*** 268,274 ****
template<typename _Res, typename _Class _GLIBCXX_COMMA_SHIFTED
_GLIBCXX_TEMPLATE_PARAMS_SHIFTED>
! class _Mem_fn<_Res (_Class::*)(_GLIBCXX_TEMPLATE_ARGS_SHIFTED) const volatile>
#if _GLIBCXX_NUM_ARGS == 1
: public unary_function<const volatile _Class*, _Res>
#elif _GLIBCXX_NUM_ARGS == 2
--- 336,342 ----
template<typename _Res, typename _Class _GLIBCXX_COMMA_SHIFTED
_GLIBCXX_TEMPLATE_PARAMS_SHIFTED>
! class _Mem_fn<_Res(_Class::*)(_GLIBCXX_TEMPLATE_ARGS_SHIFTED) const volatile>
#if _GLIBCXX_NUM_ARGS == 1
: public unary_function<const volatile _Class*, _Res>
#elif _GLIBCXX_NUM_ARGS == 2
*************** class function<_Res(_GLIBCXX_TEMPLATE_AR
*** 671,677 ****
template<typename _Function>
void operator!=(const function<_Function>&) const;
! typedef _Res (*_Invoker_type)(const _Any_data& _GLIBCXX_COMMA _GLIBCXX_PARAMS);
_Invoker_type _M_invoker;
};
--- 739,746 ----
template<typename _Function>
void operator!=(const function<_Function>&) const;
! typedef _Res (*_Invoker_type)(const _Any_data& _GLIBCXX_COMMA
! _GLIBCXX_PARAMS);
_Invoker_type _M_invoker;
};
*************** template<typename _Functor>
*** 703,709 ****
}
template<typename _Res _GLIBCXX_COMMA _GLIBCXX_TEMPLATE_PARAMS>
! _Res function<_Res(_GLIBCXX_TEMPLATE_ARGS)>::operator()(_GLIBCXX_PARAMS) const
{
if (_M_empty())
{
--- 772,779 ----
}
template<typename _Res _GLIBCXX_COMMA _GLIBCXX_TEMPLATE_PARAMS>
! _Res
! function<_Res(_GLIBCXX_TEMPLATE_ARGS)>::operator()(_GLIBCXX_PARAMS) const
{
if (_M_empty())
{
diff -cpNbr --exclude=CVS /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/include/tr1/ref_wrap_iterate.h ./include/tr1/ref_wrap_iterate.h
*** /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/include/tr1/ref_wrap_iterate.h Wed Dec 31 19:00:00 1969
--- ./include/tr1/ref_wrap_iterate.h Mon Feb 28 09:39:52 2005
***************
*** 0 ****
--- 1,44 ----
+ // TR1 reference_wrapper -*- C++ -*-
+
+ // Copyright (C) 2005 Free Software Foundation, Inc.
+ // Written by Douglas Gregor <doug.gregor -at- gmail.com>
+ //
+ // 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // 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.
+
+ /** @file ref_wrap_iterate.h
+ * This is an internal header file, included by other library headers.
+ * You should not attempt to use it directly.
+ */
+
+ #if _GLIBCXX_NUM_ARGS > 0
+ template<_GLIBCXX_TEMPLATE_PARAMS>
+ typename result_of<_M_func_type(_GLIBCXX_TEMPLATE_ARGS)>::type
+ operator()(_GLIBCXX_REF_PARAMS) const;
+ #else
+ typename result_of<_M_func_type()>::type
+ operator()() const
+ { return (*get())(); }
+ #endif
diff -cpNbr --exclude=CVS /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/include/tr1/repeat.h ./include/tr1/repeat.h
*** /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/include/tr1/repeat.h Wed Dec 31 19:00:00 1969
--- ./include/tr1/repeat.h Mon Feb 28 09:40:20 2005
***************
*** 0 ****
--- 1,585 ----
+ // TR1 code repetition -*- C++ -*-
+
+ // Copyright (C) 2005 Free Software Foundation, Inc.
+ // Written by Douglas Gregor <doug.gregor -at- gmail.com>
+ //
+ // 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // 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.
+
+ /** @file repeat.h
+ * This is an internal header file, included by other library headers.
+ * You should not attempt to use it directly.
+ */
+
+ #ifndef _GLIBCXX_REPEAT_HEADER
+ # error Internal error: _GLIBCXX_REPEAT_HEADER must be set
+ #endif /* _GLIBCXX_REPEAT_HEADER */
+
+ #define _GLIBCXX_NUM_ARGS 0
+ #define _GLIBCXX_COMMA
+ #define _GLIBCXX_TEMPLATE_PARAMS
+ #define _GLIBCXX_TEMPLATE_ARGS
+ #define _GLIBCXX_PARAMS
+ #define _GLIBCXX_REF_PARAMS
+ #define _GLIBCXX_ARGS
+ #define _GLIBCXX_COMMA_SHIFTED
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #define _GLIBCXX_PARAMS_SHIFTED
+ #define _GLIBCXX_ARGS_SHIFTED
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #undef _GLIBCXX_TEMPLATE_PARAMS
+ #undef _GLIBCXX_COMMA
+ #undef _GLIBCXX_NUM_ARGS
+
+ #define _GLIBCXX_NUM_ARGS 1
+ #define _GLIBCXX_COMMA ,
+ #define _GLIBCXX_TEMPLATE_PARAMS typename _T1
+ #define _GLIBCXX_TEMPLATE_ARGS _T1
+ #define _GLIBCXX_PARAMS _T1 __a1
+ #define _GLIBCXX_REF_PARAMS _T1& __a1
+ #define _GLIBCXX_ARGS __a1
+ #define _GLIBCXX_COMMA_SHIFTED
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #define _GLIBCXX_PARAMS_SHIFTED
+ #define _GLIBCXX_ARGS_SHIFTED
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #undef _GLIBCXX_TEMPLATE_PARAMS
+ #undef _GLIBCXX_COMMA
+ #undef _GLIBCXX_NUM_ARGS
+
+ #define _GLIBCXX_NUM_ARGS 2
+ #define _GLIBCXX_COMMA ,
+ #define _GLIBCXX_TEMPLATE_PARAMS typename _T1, typename _T2
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2
+ #define _GLIBCXX_ARGS __a1, __a2
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1
+ #define _GLIBCXX_ARGS_SHIFTED __a1
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #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
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3
+ #define _GLIBCXX_ARGS __a1, __a2, __a3
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #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
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #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
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #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
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #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
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6, _T7& __a7
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #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
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6, _T7& __a7, _T8& __a8
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #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
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6, _T7& __a7, _T8& __a8, _T9& __a9
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #undef _GLIBCXX_TEMPLATE_PARAMS
+ #undef _GLIBCXX_COMMA
+ #undef _GLIBCXX_NUM_ARGS
+
+ #define _GLIBCXX_NUM_ARGS 10
+ #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, typename _T10
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6, _T7& __a7, _T8& __a8, _T9& __a9, _T10& __a10
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #undef _GLIBCXX_TEMPLATE_PARAMS
+ #undef _GLIBCXX_COMMA
+ #undef _GLIBCXX_NUM_ARGS
+
+ #define _GLIBCXX_NUM_ARGS 11
+ #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, typename _T10, typename _T11
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6, _T7& __a7, _T8& __a8, _T9& __a9, _T10& __a10, _T11& __a11
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #undef _GLIBCXX_TEMPLATE_PARAMS
+ #undef _GLIBCXX_COMMA
+ #undef _GLIBCXX_NUM_ARGS
+
+ #define _GLIBCXX_NUM_ARGS 12
+ #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, typename _T10, typename _T11, typename _T12
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6, _T7& __a7, _T8& __a8, _T9& __a9, _T10& __a10, _T11& __a11, _T12& __a12
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #undef _GLIBCXX_TEMPLATE_PARAMS
+ #undef _GLIBCXX_COMMA
+ #undef _GLIBCXX_NUM_ARGS
+
+ #define _GLIBCXX_NUM_ARGS 13
+ #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, typename _T10, typename _T11, typename _T12, typename _T13
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6, _T7& __a7, _T8& __a8, _T9& __a9, _T10& __a10, _T11& __a11, _T12& __a12, _T13& __a13
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #undef _GLIBCXX_TEMPLATE_PARAMS
+ #undef _GLIBCXX_COMMA
+ #undef _GLIBCXX_NUM_ARGS
+
+ #define _GLIBCXX_NUM_ARGS 14
+ #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, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6, _T7& __a7, _T8& __a8, _T9& __a9, _T10& __a10, _T11& __a11, _T12& __a12, _T13& __a13, _T14& __a14
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #undef _GLIBCXX_TEMPLATE_PARAMS
+ #undef _GLIBCXX_COMMA
+ #undef _GLIBCXX_NUM_ARGS
+
+ #define _GLIBCXX_NUM_ARGS 15
+ #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, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6, _T7& __a7, _T8& __a8, _T9& __a9, _T10& __a10, _T11& __a11, _T12& __a12, _T13& __a13, _T14& __a14, _T15& __a15
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #undef _GLIBCXX_TEMPLATE_PARAMS
+ #undef _GLIBCXX_COMMA
+ #undef _GLIBCXX_NUM_ARGS
+
+ #define _GLIBCXX_NUM_ARGS 16
+ #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, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6, _T7& __a7, _T8& __a8, _T9& __a9, _T10& __a10, _T11& __a11, _T12& __a12, _T13& __a13, _T14& __a14, _T15& __a15, _T16& __a16
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #undef _GLIBCXX_TEMPLATE_PARAMS
+ #undef _GLIBCXX_COMMA
+ #undef _GLIBCXX_NUM_ARGS
+
+ #define _GLIBCXX_NUM_ARGS 17
+ #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, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16, _T17 __a17
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6, _T7& __a7, _T8& __a8, _T9& __a9, _T10& __a10, _T11& __a11, _T12& __a12, _T13& __a13, _T14& __a14, _T15& __a15, _T16& __a16, _T17& __a17
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16, __a17
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #undef _GLIBCXX_TEMPLATE_PARAMS
+ #undef _GLIBCXX_COMMA
+ #undef _GLIBCXX_NUM_ARGS
+
+ #define _GLIBCXX_NUM_ARGS 18
+ #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, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16, _T17 __a17, _T18 __a18
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6, _T7& __a7, _T8& __a8, _T9& __a9, _T10& __a10, _T11& __a11, _T12& __a12, _T13& __a13, _T14& __a14, _T15& __a15, _T16& __a16, _T17& __a17, _T18& __a18
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16, __a17, __a18
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16, _T17 __a17
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16, __a17
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #undef _GLIBCXX_TEMPLATE_PARAMS
+ #undef _GLIBCXX_COMMA
+ #undef _GLIBCXX_NUM_ARGS
+
+ #define _GLIBCXX_NUM_ARGS 19
+ #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, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18, typename _T19
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18, _T19
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16, _T17 __a17, _T18 __a18, _T19 __a19
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6, _T7& __a7, _T8& __a8, _T9& __a9, _T10& __a10, _T11& __a11, _T12& __a12, _T13& __a13, _T14& __a14, _T15& __a15, _T16& __a16, _T17& __a17, _T18& __a18, _T19& __a19
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16, __a17, __a18, __a19
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16, _T17 __a17, _T18 __a18
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16, __a17, __a18
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #undef _GLIBCXX_TEMPLATE_PARAMS
+ #undef _GLIBCXX_COMMA
+ #undef _GLIBCXX_NUM_ARGS
+
+ #define _GLIBCXX_NUM_ARGS 20
+ #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, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18, typename _T19, typename _T20
+ #define _GLIBCXX_TEMPLATE_ARGS _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18, _T19, _T20
+ #define _GLIBCXX_PARAMS _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16, _T17 __a17, _T18 __a18, _T19 __a19, _T20 __a20
+ #define _GLIBCXX_REF_PARAMS _T1& __a1, _T2& __a2, _T3& __a3, _T4& __a4, _T5& __a5, _T6& __a6, _T7& __a7, _T8& __a8, _T9& __a9, _T10& __a10, _T11& __a11, _T12& __a12, _T13& __a13, _T14& __a14, _T15& __a15, _T16& __a16, _T17& __a17, _T18& __a18, _T19& __a19, _T20& __a20
+ #define _GLIBCXX_ARGS __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16, __a17, __a18, __a19, __a20
+ #define _GLIBCXX_COMMA_SHIFTED ,
+ #define _GLIBCXX_TEMPLATE_PARAMS_SHIFTED typename _T1, typename _T2, typename _T3, typename _T4, typename _T5, typename _T6, typename _T7, typename _T8, typename _T9, typename _T10, typename _T11, typename _T12, typename _T13, typename _T14, typename _T15, typename _T16, typename _T17, typename _T18, typename _T19
+ #define _GLIBCXX_TEMPLATE_ARGS_SHIFTED _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15, _T16, _T17, _T18, _T19
+ #define _GLIBCXX_PARAMS_SHIFTED _T1 __a1, _T2 __a2, _T3 __a3, _T4 __a4, _T5 __a5, _T6 __a6, _T7 __a7, _T8 __a8, _T9 __a9, _T10 __a10, _T11 __a11, _T12 __a12, _T13 __a13, _T14 __a14, _T15 __a15, _T16 __a16, _T17 __a17, _T18 __a18, _T19 __a19
+ #define _GLIBCXX_ARGS_SHIFTED __a1, __a2, __a3, __a4, __a5, __a6, __a7, __a8, __a9, __a10, __a11, __a12, __a13, __a14, __a15, __a16, __a17, __a18, __a19
+ #include _GLIBCXX_REPEAT_HEADER
+ #undef _GLIBCXX_ARGS_SHIFTED
+ #undef _GLIBCXX_PARAMS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_ARGS_SHIFTED
+ #undef _GLIBCXX_TEMPLATE_PARAMS_SHIFTED
+ #undef _GLIBCXX_COMMA_SHIFTED
+ #undef _GLIBCXX_ARGS
+ #undef _GLIBCXX_REF_PARAMS
+ #undef _GLIBCXX_PARAMS
+ #undef _GLIBCXX_TEMPLATE_ARGS
+ #undef _GLIBCXX_TEMPLATE_PARAMS
+ #undef _GLIBCXX_COMMA
+ #undef _GLIBCXX_NUM_ARGS
+
Files /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/testsuite/tr1/3_function_objects/a.out and ./testsuite/tr1/3_function_objects/a.out differ
Files /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/testsuite/tr1/3_function_objects/function/a.out and ./testsuite/tr1/3_function_objects/function/a.out differ
Files /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/a.out and ./testsuite/tr1/3_function_objects/reference_wrapper/a.out differ
diff -cpNbr --exclude=CVS /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc ./testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc
*** /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc Wed Dec 31 19:00:00 1969
--- ./testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc Mon Feb 28 09:39:20 2005
***************
*** 0 ****
--- 1,103 ----
+ // 2005-02-27 Douglas Gregor <doug.gregor -at- gmail.com>
+ //
+ // Copyright (C) 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+
+ // 2.1 reference wrappers
+ #include <tr1/functional>
+ #include <tr1/type_traits>
+ #include <testsuite_hooks.h>
+ #include <testsuite_tr1.h>
+
+ using namespace __gnu_test;
+
+ bool test __attribute__((unused)) = true;
+
+ struct X
+ {
+ typedef int result_type;
+
+ X() : bar(17) {}
+
+ int foo(float x) { return truncate_float(x); }
+ int foo_c(float x) const { return truncate_float(x); }
+ int foo_v(float x) volatile { return truncate_float(x); }
+ int foo_cv(float x) const volatile { return truncate_float(x); }
+
+ int operator()(float x)
+ {
+ return foo(x) + 1;
+ }
+
+ int operator()(float x) const
+ {
+ return foo_c(x) + 2;
+ }
+
+ int bar;
+
+ private:
+ X(const X&);
+ X& operator=(const X&);
+ };
+
+ void test01()
+ {
+ using std::tr1::ref;
+ using std::tr1::cref;
+
+ ::X x;
+ ::X* xp = &x;
+ int (::X::* p_foo)(float) = &::X::foo;
+ int (::X::* p_foo_c)(float) const = &::X::foo_c;
+ int (::X::* p_foo_v)(float) volatile = &::X::foo_v;
+ int (::X::* p_foo_cv)(float) const volatile = &::X::foo_cv;
+ int ::X::* p_bar = &::X::bar;
+
+ const float pi = 3.14;
+
+ // Functions
+ VERIFY(ref(truncate_float)(pi) == 3);
+
+ // Function pointers
+ VERIFY(cref(&truncate_float)(pi) == 3);
+
+ // Member function pointers
+ VERIFY(ref(p_foo)(x, pi) == 3);
+ VERIFY(ref(p_foo)(xp, pi) == 3);
+ VERIFY(ref(p_foo_c)(x, pi) == 3);
+ VERIFY(ref(p_foo_c)(xp, pi) == 3);
+ VERIFY(ref(p_foo_v)(x, pi) == 3);
+ VERIFY(ref(p_foo_v)(xp, pi) == 3);
+ VERIFY(ref(p_foo_cv)(x, pi) == 3);
+ VERIFY(ref(p_foo_cv)(xp, pi) == 3);
+
+ // Member data pointers
+ VERIFY(ref(p_bar)(x) == 17);
+ VERIFY(ref(p_bar)(xp) == 17);
+
+ // Function objects
+ VERIFY(ref(x)(pi) == 4);
+ VERIFY(cref(x)(pi) == 5);
+ }
+
+ int main()
+ {
+ test01();
+ return 0;
+ }
diff -cpNbr --exclude=CVS /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc ./testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc
*** /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc Wed Dec 31 19:00:00 1969
--- ./testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc Mon Feb 28 09:39:33 2005
***************
*** 0 ****
--- 1,89 ----
+ // 2005-02-27 Douglas Gregor <doug.gregor -at- gmail.com>
+ //
+ // Copyright (C) 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+
+ // 2.1 reference wrappers
+ #include <tr1/functional>
+ #include <tr1/type_traits>
+ #include <testsuite_hooks.h>
+ #include <testsuite_tr1.h>
+
+ using namespace __gnu_test;
+
+ struct X {};
+
+ struct int_result_type { typedef int result_type; };
+
+ struct derives_unary : std::unary_function<int, int> {};
+
+ struct derives_binary : std::binary_function<int, float, int> {};
+
+ struct derives_unary_binary
+ : std::unary_function<int, int>,
+ std::binary_function<int, float, int>
+ {
+ typedef int result_type;
+ };
+
+ void test01()
+ {
+ bool test __attribute__((unused)) = true;
+
+ using std::tr1::reference_wrapper;
+ using std::tr1::is_same;
+ using std::tr1::is_convertible;
+ using std::unary_function;
+ using std::binary_function;
+
+ // Check result_type typedef
+ VERIFY((is_same<reference_wrapper<int_result_type>::result_type, int>::value));
+ VERIFY((is_same<reference_wrapper<derives_unary>::result_type, int>::value));
+ VERIFY((is_same<reference_wrapper<derives_binary>::result_type, int>::value));
+ VERIFY((is_same<reference_wrapper<derives_unary_binary>::result_type, int>::value));
+ VERIFY((is_same<reference_wrapper<int(void)>::result_type, int>::value));
+ VERIFY((is_same<reference_wrapper<int(*)(void)>::result_type, int>::value));
+ VERIFY((is_same<reference_wrapper<int (::X::*)()>::result_type, int>::value));
+ VERIFY((is_same<reference_wrapper<int (::X::*)(float)>::result_type, int>::value));
+
+ // Check derivation from unary_function
+ VERIFY((is_convertible<reference_wrapper<derives_unary>*, unary_function<int, int>*>::value));
+ VERIFY((is_convertible<reference_wrapper<derives_unary_binary>*, unary_function<int, int>*>::value));
+ VERIFY((is_convertible<reference_wrapper<int(int)>*, unary_function<int, int>*>::value));
+ VERIFY((is_convertible<reference_wrapper<int(*)(int)>*, unary_function<int, int>*>::value));
+ VERIFY((is_convertible<reference_wrapper<int (::X::*)()>*, unary_function< ::X*, int>*>::value));
+ VERIFY((is_convertible<reference_wrapper<int (::X::*)() const>*, unary_function<const ::X*, int>*>::value));
+ VERIFY((is_convertible<reference_wrapper<int (::X::*)() volatile>*, unary_function<volatile ::X*, int>*>::value));
+ VERIFY((is_convertible<reference_wrapper<int (::X::*)() const volatile>*, unary_function<const volatile ::X*, int>*>::value));
+
+ // Check derivation from binary_function
+ VERIFY((is_convertible<reference_wrapper<derives_binary>*, binary_function<int, float, int>*>::value));
+ VERIFY((is_convertible<reference_wrapper<derives_unary_binary>*, binary_function<int, float, int>*>::value));
+ VERIFY((is_convertible<reference_wrapper<int(int, float)>*, binary_function<int, float, int>*>::value));
+ VERIFY((is_convertible<reference_wrapper<int(*)(int, float)>*, binary_function<int, float, int>*>::value));
+ VERIFY((is_convertible<reference_wrapper<int (::X::*)(float)>*, binary_function< ::X*, float, int>*>::value));
+ VERIFY((is_convertible<reference_wrapper<int (::X::*)(float) const>*, binary_function<const ::X*, float, int>*>::value));
+ VERIFY((is_convertible<reference_wrapper<int (::X::*)(float) volatile>*, binary_function<volatile ::X*, float, int>*>::value));
+ VERIFY((is_convertible<reference_wrapper<int (::X::*)(float) const volatile>*, binary_function<const volatile ::X*, float, int>*>::value));
+ }
+
+ int main()
+ {
+ test01();
+ return 0;
+ }
diff -cpNbr --exclude=CVS /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/testsuite/tr1/3_function_objects/result_of.cc ./testsuite/tr1/3_function_objects/result_of.cc
*** /home/gregod/Projects/GCC/gcc-baseline/libstdc++-v3/testsuite/tr1/3_function_objects/result_of.cc Mon Feb 28 09:31:14 2005
--- ./testsuite/tr1/3_function_objects/result_of.cc Mon Feb 28 09:39:03 2005
***************
*** 1,4 ****
! // 2005-01-26 Douglas Gregor <dgregor@cs.indiana.edu>
//
// Copyright (C) 2005 Free Software Foundation, Inc.
//
--- 1,4 ----
! // 2005-01-26 Douglas Gregor <doug.gregor -at- gmail.com>
//
// Copyright (C) 2005 Free Software Foundation, Inc.
//