#ifndef _GLIBCXX_REPEAT_HEADER
# define _GLIBCXX_REPEAT_HEADER "tuple_defs.h"
# include "repeat.h"
# undef _GLIBCXX_REPEAT_HEADER
#endif
#ifdef _GLIBCXX_LAST_INCLUDE
template<_GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS> class tuple;
template<int __i, _GLIBCXX_TEMPLATE_PARAMS>
typename __add_ref<typename tuple_element<__i, tuple<_GLIBCXX_TEMPLATE_ARGS> >::type>::type
get(tuple<_GLIBCXX_TEMPLATE_ARGS>& __t)
{
return __get_helper<__i, tuple<_GLIBCXX_TEMPLATE_ARGS> >::get_value(__t);
}
template<int __i, _GLIBCXX_TEMPLATE_PARAMS>
typename __add_c_ref<typename tuple_element<__i, tuple<_GLIBCXX_TEMPLATE_ARGS> >::type>::type
get(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t)
{
return __get_helper<__i, tuple<_GLIBCXX_TEMPLATE_ARGS> >::get_value(__t);
}
template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
bool
operator==(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
{
typedef tuple<_GLIBCXX_TEMPLATE_ARGS> _Tp;
typedef tuple<_GLIBCXX_TEMPLATE_ARGS_U> _Up;
return __tuple_compare<tuple_size<_Tp>::value - tuple_size<_Tp>::value, 0,
tuple_size<_Tp>::value, _Tp, _Up>::__eq(__t, __u);
}
template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
bool
operator<(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
{
typedef tuple<_GLIBCXX_TEMPLATE_ARGS> _Tp;
typedef tuple<_GLIBCXX_TEMPLATE_ARGS_U> _Up;
return __tuple_compare<tuple_size<_Tp>::value - tuple_size<_Tp>::value, 0,
tuple_size<_Tp>::value, _Tp, _Up>::__less(__t, __u);
}
template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
bool
operator!=(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
{ return !(__t == __u); }
template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
bool
operator>(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
{ return __u < __t; }
template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
bool
operator<=(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
{ return !(__u < __t); }
template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
bool
operator>=(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
{ return !(__t < __u); }
template<_GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS>
struct __stripped_tuple_type
{
typedef tuple<_GLIBCXX_TEMPLATE_ARGS_STRIPPED> __type;
};
#endif