re PR libstdc++/18159 (tr1/tuple is broken on darwin)
authorChris Jefferson <chris@bubblescope.net>
Thu, 28 Oct 2004 21:18:56 +0000 (21:18 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Thu, 28 Oct 2004 21:18:56 +0000 (21:18 +0000)
2004-10-28  Chris Jefferson  <chris@bubblescope.net>

PR libstdc++/18159
* include/tr1/tuple: Fix, change formatting.

From-SVN: r89782

libstdc++-v3/ChangeLog
libstdc++-v3/include/tr1/tuple

index 561c3670dc6045e612d01ab5d082116f758c5e83..81f88ffda31fcae57102cbdbfa52bbaebc7a53ab 100644 (file)
@@ -1,3 +1,8 @@
+2004-10-28  Chris Jefferson  <chris@bubblescope.net>
+
+       PR libstdc++/18159
+       * include/tr1/tuple: Fix, change formatting.
+
 2004-10-28  Benjamin Kosnik  <bkoz@redhat.com>
 
        * include/ext/mt_allocator.h (__common_pool_policy): Add template
index d17135ad1538d38349892c33489fb971d8fb623d..272edc3cb9191f2d7ac0fd7144416e40cf3106ed 100644 (file)
@@ -36,1372 +36,1399 @@ namespace tr1
   struct _NullClass { };
 
   // Foward definition of the tuple class
-  template<typename _T0 = _NullClass, typename _T1 = _NullClass, 
-          typename _T2 = _NullClass, typename _T3 = _NullClass, 
-          typename _T4 = _NullClass, typename _T5 = _NullClass, 
-          typename _T6 = _NullClass, typename _T7 = _NullClass, 
-          typename _T8 = _NullClass, typename _T9 = _NullClass>
+  template<typename _Tp0 = _NullClass, typename _Tp1 = _NullClass,
+          typename _Tp2 = _NullClass, typename _Tp3 = _NullClass,
+          typename _Tp4 = _NullClass, typename _Tp5 = _NullClass,
+          typename _Tp6 = _NullClass, typename _Tp7 = _NullClass,
+          typename _Tp8 = _NullClass, typename _Tp9 = _NullClass>
     class tuple;
 
   // Gives the type of the ith element of a given tuple type.
-  template<int __i, typename _T>
+  template<int __i, typename _Tp>
     struct tuple_element;
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-    struct tuple_element<0, tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, 
-                                 _T7, _T8, _T9> >
-    { typedef _T0 type; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-    struct tuple_element<1, tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, 
-                                 _T7, _T8, _T9> >
-    { typedef _T1 type; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-    struct tuple_element<2, tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, 
-                                 _T7, _T8, _T9> >
-    { typedef _T2 type; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-    struct tuple_element<3, tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, 
-                                 _T7, _T8, _T9> >
-    { typedef _T3 type; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-    struct tuple_element<4, tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, 
-                                 _T7, _T8, _T9> > 
-    { typedef _T4 type; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-    struct tuple_element<5, tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, 
-                                 _T7, _T8, _T9> >
-    { typedef _T5 type; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-    struct tuple_element<6, tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, 
-                                 _T7, _T8, _T9> >
-    { typedef _T6 type; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-    struct tuple_element<7, tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, 
-                                 _T7, _T8, _T9> >
-    { typedef _T7 type; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-    struct tuple_element<8, tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, 
-                                 _T7, _T8, _T9> >
-    { typedef _T8 type; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-    struct tuple_element<9, tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, 
-                                 _T7, _T8, _T9> >
-   { typedef _T9 type; };
-  
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9>
+    struct tuple_element<0, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                 _Tp7, _Tp8, _Tp9> >
+    { typedef _Tp0 type; };
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9>
+    struct tuple_element<1, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                 _Tp7, _Tp8, _Tp9> >
+    { typedef _Tp1 type; };
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9>
+    struct tuple_element<2, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                 _Tp7, _Tp8, _Tp9> >
+    { typedef _Tp2 type; };
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9>
+    struct tuple_element<3, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                 _Tp7, _Tp8, _Tp9> >
+    { typedef _Tp3 type; };
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9>
+    struct tuple_element<4, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                 _Tp7, _Tp8, _Tp9> >
+    { typedef _Tp4 type; };
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9>
+    struct tuple_element<5, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                 _Tp7, _Tp8, _Tp9> >
+    { typedef _Tp5 type; };
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9>
+    struct tuple_element<6, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                 _Tp7, _Tp8, _Tp9> >
+    { typedef _Tp6 type; };
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9>
+    struct tuple_element<7, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                 _Tp7, _Tp8, _Tp9> >
+    { typedef _Tp7 type; };
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9>
+    struct tuple_element<8, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                 _Tp7, _Tp8, _Tp9> >
+    { typedef _Tp8 type; };
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9>
+    struct tuple_element<9, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                 _Tp7, _Tp8, _Tp9> >
+    { typedef _Tp9 type; };
+
   // Finds the size of a given tuple type.
-  // NB: Can't this be done via value->type conversions in the generic
-  // tuple class, say with an enum?
-  template<typename _T>
+  template<typename _Tp>
     struct tuple_size;
 
   template<>
-    struct tuple_size<tuple<_NullClass, _NullClass, _NullClass, _NullClass, 
-                           _NullClass, _NullClass, _NullClass, _NullClass, 
+    struct tuple_size<tuple<_NullClass, _NullClass, _NullClass, _NullClass,
+                           _NullClass, _NullClass, _NullClass, _NullClass,
                            _NullClass, _NullClass> >
     { static const int value = 0; };
-  
-  template<typename _T0>
-    struct tuple_size<tuple<_T0, _NullClass, _NullClass, _NullClass, 
-                           _NullClass, _NullClass, _NullClass, _NullClass, 
+
+  template< typename _Tp0>
+    struct tuple_size<tuple< _Tp0, _NullClass, _NullClass, _NullClass,
+                           _NullClass, _NullClass, _NullClass, _NullClass,
                            _NullClass, _NullClass> >
     { static const int value = 1; };
-  
-  template<typename _T0, typename _T1>
-    struct tuple_size<tuple<_T0, _T1, _NullClass, _NullClass, _NullClass, 
-                           _NullClass, _NullClass, _NullClass, _NullClass, 
+
+  template<typename _Tp0, typename _Tp1>
+    struct tuple_size<tuple<_Tp0, _Tp1, _NullClass, _NullClass, _NullClass,
+                           _NullClass, _NullClass, _NullClass, _NullClass,
                            _NullClass> >
     { static const int value = 2; };
-  
-  template<typename _T0, typename _T1, typename _T2>
-    struct tuple_size<tuple<_T0, _T1, _T2, _NullClass, _NullClass, 
-                           _NullClass, _NullClass, _NullClass, _NullClass, 
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2>
+    struct tuple_size<tuple<_Tp0, _Tp1, _Tp2, _NullClass, _NullClass,
+                           _NullClass, _NullClass, _NullClass, _NullClass,
                            _NullClass> >
     { static const int value = 3; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3>
-    struct tuple_size<tuple<_T0, _T1, _T2, _T3, _NullClass, _NullClass, 
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3>
+    struct tuple_size<tuple<_Tp0, _Tp1, _Tp2, _Tp3, _NullClass, _NullClass,
                            _NullClass, _NullClass, _NullClass, _NullClass> >
     { static const int value = 4; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4>
-    struct tuple_size<tuple<_T0, _T1, _T2, _T3, _T4, _NullClass, 
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4>
+    struct tuple_size<tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _NullClass,
                            _NullClass, _NullClass, _NullClass, _NullClass> >
     { static const int value = 5; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5>
-    struct tuple_size<tuple<_T0, _T1, _T2, _T3, _T4, _T5, _NullClass, 
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5>
+    struct tuple_size<tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _NullClass,
                            _NullClass, _NullClass, _NullClass> >
     { static const int value = 6; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6>
-    struct tuple_size<tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, 
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6>
+    struct tuple_size<tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, 
                            _NullClass, _NullClass, _NullClass> >
     { static const int value = 7; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7>
-    struct tuple_size<tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, 
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7>
+    struct tuple_size<tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, 
                            _NullClass, _NullClass> >
     { static const int value = 8; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8>
-    struct tuple_size<tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, 
-                           _T8, _NullClass> >
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8>
+    struct tuple_size<tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7,
+                           _Tp8,  _NullClass> >
     { static const int value = 9; };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-    struct tuple_size<tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, 
-                           _T8, _T9> >
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9>
+    struct tuple_size<tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7,
+                           _Tp8, _Tp9> >
     { static const int value = 10; };
-  
+
   // Adds a const reference to a non-reference type.
-  template<typename _T>
-    struct __add_const_ref
-    { typedef const _T& type; };
-  
-  template<typename _T>
-    struct __add_const_ref<_T&>
-    { typedef _T& type; };
-  
+  template<typename _Tp>
+    struct __add_c_ref
+    { typedef const _Tp& type; };
+
+  template<typename _Tp>
+    struct __add_c_ref<_Tp&>
+    { typedef _Tp& type; };
+
   // Adds a reference to a non-reference type.
-  template<typename _T>
+  template<typename _Tp>
     struct __add_ref
-    { typedef _T& type; };
-  
-  template<typename _T>
-    struct __add_ref<_T&>
-    { typedef _T& type; };
-  
+    { typedef _Tp& type; };
+
+  template<typename _Tp>
+    struct __add_ref<_Tp&>
+    { typedef _Tp& type; };
+
   // The empty tuple.
   template<>
-    class tuple<_NullClass, _NullClass, _NullClass, _NullClass, _NullClass, 
-               _NullClass, _NullClass, _NullClass, _NullClass, _NullClass>
+    class tuple<_NullClass, _NullClass, _NullClass, _NullClass, _NullClass,
+               _NullClass, _NullClass, _NullClass, _NullClass, _NullClass>
     {
     public:
       tuple()
       { }
-      
+
       tuple(const tuple& __in)
       { }
-      
+
       tuple& operator=(const tuple& __in)
       { return *this; }
     };
-  
-  template<typename _T0>
-    class tuple<_T0, _NullClass, _NullClass, _NullClass, _NullClass, 
-               _NullClass, _NullClass, _NullClass, _NullClass, _NullClass>
+
+  template< typename _Tp0>
+    class tuple< _Tp0, _NullClass, _NullClass, _NullClass, _NullClass,
+               _NullClass, _NullClass, _NullClass, _NullClass, _NullClass>
     {
-      _T0 __t0;
+      _Tp0 _M_t0;
 
     public:
       tuple()
       { }
-      
-      explicit tuple(typename __add_const_ref<_T0>::type __in0):
-      __t0(__in0)
+
+      explicit tuple( typename __add_c_ref<_Tp0>::type __in0):
+         _M_t0(__in0)
       { }
-      
-    tuple(const tuple& __in):
-      __t0(__in.__t0)
-    { }
-    template <typename _U0>
-    tuple(const tuple<_U0>& __in):
-      __t0(__in.__t0)
-    { }
-      
-    tuple& operator=(const tuple& __in)
-    {
-      __t0=__in.__t0;
-      return *this;
-    }
-      
-    template <typename _U0>
-    tuple&
-    operator=(const tuple<_U0>& __in)
-    {
-      __t0=__in.__t0;
-      return *this;
-    }
-    template<int __i, typename _U>
-    friend class __get_helper;
-    template<typename, typename, typename, typename, typename, typename, 
-            typename, typename, typename, typename>
-    friend class tuple;
+
+      tuple(const tuple& __in):
+         _M_t0(__in._M_t0)
+      { }
+
+      template< typename _Up0>
+        tuple(const tuple< _Up0>& __in):
+          _M_t0(__in._M_t0)
+        { }
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+        _M_t0=__in._M_t0;
+        return *this;
+      }
+
+      template< typename _Up0>
+        tuple&
+        operator=(const tuple< _Up0>& __in)
+        {
+         _M_t0=__in._M_t0;
+         return *this;
+        }
+
+      template<int __i, typename _Up>
+        friend class __get_helper;
+      template<typename, typename, typename, typename, typename, typename,
+              typename, typename, typename, typename>
+        friend class tuple;
   };
-  
-  template<typename _T0, typename _T1>
-  class tuple<_T0, _T1, _NullClass, _NullClass, _NullClass, _NullClass, 
-             _NullClass, _NullClass, _NullClass, _NullClass>
-  {
-    _T0 __t0;
-    _T1 __t1;
-  public:
-    tuple()
-    { }
-      
-    explicit tuple(typename __add_const_ref<_T0>::type __in0, 
-                  typename __add_const_ref<_T1>::type __in1):
-      __t0(__in0), __t1(__in1)
-    { }
-      
-    tuple(const tuple& __in):
-      __t0(__in.__t0), __t1(__in.__t1)
-    { }
-    template <typename _U0, typename _U1>
-    tuple(const tuple<_U0, _U1>& __in):
-      __t0(__in.__t0), __t1(__in.__t1)
-    { }
-      
-    template<class _U1, class _U2>
-    tuple(const std::pair<_U1, _U2>& __u): __t0(__u.first), __t1(__u.second)
-    { }
-      
-    tuple& operator=(const tuple& __in)
-    {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      return *this;
-    }
-      
-    template <typename _U0, typename _U1>
-    tuple&
-    operator=(const tuple<_U0, _U1>& __in)
+
+  template<typename _Tp0, typename _Tp1>
+    class tuple<_Tp0, _Tp1, _NullClass, _NullClass, _NullClass, _NullClass,
+               _NullClass, _NullClass, _NullClass, _NullClass>
     {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      return *this;
-    }
-    template<int __i, typename _U>
-    friend class __get_helper;
-    template<typename, typename, typename, typename, typename, typename, 
-            typename, typename, typename, typename>
-    friend class tuple;
+      _Tp0 _M_t0;
+      _Tp1 _M_t1;
+
+    public:
+      tuple()
+      { }
+
+      explicit tuple(typename __add_c_ref<_Tp0>::type __in0,
+                    typename __add_c_ref<_Tp1>::type __in1):
+        _M_t0(__in0), _M_t1(__in1)
+      { }
+
+      tuple(const tuple& __in):
+        _M_t0(__in._M_t0), _M_t1(__in._M_t1)
+      { }
+
+      template<typename _Up0, typename _Up1>
+        tuple(const tuple<_Up0, _Up1>& __in):
+         _M_t0(__in._M_t0), _M_t1(__in._M_t1)
+        { }
+
+      template<class _Up1, class _Up2>
+        tuple(const std::pair<_Up1, _Up2>& __u):
+           _M_t0(__u.first), _M_t1(__u.second)
+        { }
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+        _M_t0=__in._M_t0;
+        _M_t1=__in._M_t1;
+        return *this;
+      }
+
+      template<typename _Up0, typename _Up1>
+        tuple&
+        operator=(const tuple<_Up0, _Up1>& __in)
+        {
+         _M_t0=__in._M_t0;
+         _M_t1=__in._M_t1;
+         return *this;
+        }
+
+      template<int __i, typename _Up>
+        friend class __get_helper;
+      template<typename, typename, typename, typename, typename, typename,
+              typename, typename, typename, typename>
+        friend class tuple;
   };
-  
-  template<typename _T0, typename _T1, typename _T2>
-  class tuple<_T0, _T1, _T2, _NullClass, _NullClass, _NullClass, 
-             _NullClass, _NullClass, _NullClass, _NullClass>
-  {
-    _T0 __t0;
-    _T1 __t1;
-    _T2 __t2;
-  public:
-    tuple()
-    { }
-      
-    explicit tuple(typename __add_const_ref<_T0>::type __in0, 
-                  typename __add_const_ref<_T1>::type __in1, 
-                  typename __add_const_ref<_T2>::type __in2):
-      __t0(__in0), __t1(__in1), __t2(__in2)
-    { }
-      
-    tuple(const tuple& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2)
-    { }
-    template <typename _U0, typename _U1, typename _U2>
-    tuple(const tuple<_U0, _U1, _U2>& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2)
-    { }
-      
-    tuple& operator=(const tuple& __in)
-    {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      return *this;
-    }
-      
-    template <typename _U0, typename _U1, typename _U2>
-    tuple&
-    operator=(const tuple<_U0, _U1, _U2>& __in)
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2>
+    class tuple<_Tp0, _Tp1, _Tp2, _NullClass, _NullClass, _NullClass,
+               _NullClass, _NullClass, _NullClass, _NullClass>
     {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      return *this;
-    }
-    template<int __i, typename _U>
-    friend class __get_helper;
-    template<typename, typename, typename, typename, typename, typename, 
-            typename, typename, typename, typename>
-    friend class tuple;
+      _Tp0 _M_t0;
+      _Tp1 _M_t1;
+      _Tp2 _M_t2;
+
+    public:
+      tuple()
+      { }
+
+      explicit tuple(typename __add_c_ref<_Tp0>::type __in0,
+                    typename __add_c_ref<_Tp1>::type __in1,
+                    typename __add_c_ref<_Tp2>::type __in2):
+        _M_t0(__in0), _M_t1(__in1), _M_t2(__in2)
+      { }
+
+      tuple(const tuple& __in):
+        _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2)
+      { }
+
+      template<typename _Up0, typename _Up1, typename _Up2>
+        tuple(const tuple<_Up0, _Up1, _Up2>& __in):
+         _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2)
+        { }
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+        _M_t0=__in._M_t0;
+        _M_t1=__in._M_t1;
+        _M_t2=__in._M_t2;
+        return *this;
+      }
+
+      template<typename _Up0, typename _Up1, typename _Up2>
+        tuple&
+        operator=(const tuple<_Up0, _Up1, _Up2>& __in)
+        {
+         _M_t0=__in._M_t0;
+         _M_t1=__in._M_t1;
+         _M_t2=__in._M_t2;
+         return *this;
+        }
+
+      template<int __i, typename _Up>
+        friend class __get_helper;
+      template<typename, typename, typename, typename, typename, typename,
+              typename, typename, typename, typename>
+        friend class tuple;
   };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3>
-  class tuple<_T0, _T1, _T2, _T3, _NullClass, _NullClass, _NullClass, 
-             _NullClass, _NullClass, _NullClass>
-  {
-    _T0 __t0;
-    _T1 __t1;
-    _T2 __t2;
-    _T3 __t3;
-  public:
-    tuple()
-    { }
-      
-    explicit tuple(typename __add_const_ref<_T0>::type __in0, 
-                  typename __add_const_ref<_T1>::type __in1, 
-                  typename __add_const_ref<_T2>::type __in2, 
-                  typename __add_const_ref<_T3>::type __in3):
-      __t0(__in0), __t1(__in1), __t2(__in2), __t3(__in3)
-    { }
-      
-    tuple(const tuple& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2), 
-      __t3(__in.__t3)
-    { }
-    template <typename _U0, typename _U1, typename _U2, typename _U3>
-    tuple(const tuple<_U0, _U1, _U2, _U3>& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2), 
-      __t3(__in.__t3)
-    { }
-      
-    tuple& operator=(const tuple& __in)
-    {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      __t3=__in.__t3;
-      return *this;
-    }
-      
-    template <typename _U0, typename _U1, typename _U2, typename _U3>
-    tuple&
-    operator=(const tuple<_U0, _U1, _U2, _U3>& __in)
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3>
+    class tuple<_Tp0, _Tp1, _Tp2, _Tp3, _NullClass, _NullClass, _NullClass,
+               _NullClass, _NullClass, _NullClass>
     {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      __t3=__in.__t3;
-      return *this;
-    }
-    template<int __i, typename _U>
-    friend class __get_helper;
-    template<typename, typename, typename, typename, typename, typename, 
-            typename, typename, typename, typename>
-    friend class tuple;
+      _Tp0 _M_t0;
+      _Tp1 _M_t1;
+      _Tp2 _M_t2;
+      _Tp3 _M_t3;
+
+    public:
+      tuple()
+      { }
+
+      explicit tuple(typename __add_c_ref<_Tp0>::type __in0,
+                    typename __add_c_ref<_Tp1>::type __in1,
+                    typename __add_c_ref<_Tp2>::type __in2,
+                    typename __add_c_ref<_Tp3>::type __in3):
+        _M_t0(__in0), _M_t1(__in1), _M_t2(__in2), _M_t3(__in3)
+      { }
+
+      tuple(const tuple& __in):
+        _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2),
+        _M_t3(__in._M_t3)
+      { }
+
+      template<typename _Up0, typename _Up1, typename _Up2, typename _Up3>
+        tuple(const tuple<_Up0, _Up1, _Up2, _Up3>& __in):
+         _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2),
+         _M_t3(__in._M_t3)
+        { }
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+        _M_t0=__in._M_t0;
+        _M_t1=__in._M_t1;
+        _M_t2=__in._M_t2;
+        _M_t3=__in._M_t3;
+        return *this;
+      }
+
+      template<typename _Up0, typename _Up1, typename _Up2, typename _Up3>
+        tuple&
+        operator=(const tuple<_Up0, _Up1, _Up2, _Up3>& __in)
+        {
+         _M_t0=__in._M_t0;
+         _M_t1=__in._M_t1;
+         _M_t2=__in._M_t2;
+         _M_t3=__in._M_t3;
+         return *this;
+        }
+
+      template<int __i, typename _Up>
+        friend class __get_helper;
+      template<typename, typename, typename, typename, typename, typename,
+              typename, typename, typename, typename>
+        friend class tuple;
   };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4>
-  class tuple<_T0, _T1, _T2, _T3, _T4, _NullClass, _NullClass, 
-             _NullClass, _NullClass, _NullClass>
-  {
-    _T0 __t0;
-    _T1 __t1;
-    _T2 __t2;
-    _T3 __t3;
-    _T4 __t4;
-  public:
-    tuple()
-    { }
-      
-    explicit tuple(typename __add_const_ref<_T0>::type __in0, 
-                  typename __add_const_ref<_T1>::type __in1, 
-                  typename __add_const_ref<_T2>::type __in2, 
-                  typename __add_const_ref<_T3>::type __in3, 
-                  typename __add_const_ref<_T4>::type __in4):
-      __t0(__in0), __t1(__in1), __t2(__in2), __t3(__in3), 
-      __t4(__in4)
-    { }
-      
-    tuple(const tuple& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2), 
-      __t3(__in.__t3), __t4(__in.__t4)
-    { }
-    template <typename _U0, typename _U1, typename _U2, typename _U3, 
-             typename _U4>
-    tuple(const tuple<_U0, _U1, _U2, _U3, _U4>& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2), 
-      __t3(__in.__t3), __t4(__in.__t4)
-    { }
-      
-    tuple& operator=(const tuple& __in)
-    {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      __t3=__in.__t3;
-      __t4=__in.__t4;
-      return *this;
-    }
-      
-    template <typename _U0, typename _U1, typename _U2, typename _U3, 
-             typename _U4>
-    tuple&
-    operator=(const tuple<_U0, _U1, _U2, _U3, _U4>& __in)
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4>
+    class tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _NullClass, _NullClass,
+               _NullClass, _NullClass, _NullClass>
     {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      __t3=__in.__t3;
-      __t4=__in.__t4;
-      return *this;
-    }
-    template<int __i, typename _U>
-    friend class __get_helper;
-    template<typename, typename, typename, typename, typename, typename, 
-            typename, typename, typename, typename>
-    friend class tuple;
+      _Tp0 _M_t0;
+      _Tp1 _M_t1;
+      _Tp2 _M_t2;
+      _Tp3 _M_t3;
+      _Tp4 _M_t4;
+
+    public:
+      tuple()
+      { }
+
+      explicit tuple(typename __add_c_ref<_Tp0>::type __in0,
+                    typename __add_c_ref<_Tp1>::type __in1,
+                    typename __add_c_ref<_Tp2>::type __in2,
+                    typename __add_c_ref<_Tp3>::type __in3,
+                    typename __add_c_ref<_Tp4>::type __in4):
+        _M_t0(__in0), _M_t1(__in1), _M_t2(__in2), _M_t3(__in3), _M_t4(__in4)
+      { }
+
+      tuple(const tuple& __in):
+        _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2),
+        _M_t3(__in._M_t3), _M_t4(__in._M_t4)
+      { }
+
+      template<typename _Up0, typename _Up1, typename _Up2, typename _Up3,
+              typename _Up4>
+        tuple(const tuple<_Up0, _Up1, _Up2, _Up3, _Up4>& __in):
+         _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2),
+         _M_t3(__in._M_t3), _M_t4(__in._M_t4)
+        { }
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+        _M_t0=__in._M_t0;
+        _M_t1=__in._M_t1;
+        _M_t2=__in._M_t2;
+        _M_t3=__in._M_t3;
+        _M_t4=__in._M_t4;
+        return *this;
+      }
+
+      template<typename _Up0, typename _Up1, typename _Up2, typename _Up3,
+              typename _Up4>
+        tuple&
+        operator=(const tuple<_Up0, _Up1, _Up2, _Up3, _Up4>& __in)
+        {
+         _M_t0=__in._M_t0;
+         _M_t1=__in._M_t1;
+         _M_t2=__in._M_t2;
+         _M_t3=__in._M_t3;
+         _M_t4=__in._M_t4;
+         return *this;
+        }
+
+      template<int __i, typename _Up>
+        friend class __get_helper;
+      template<typename, typename, typename, typename, typename, typename,
+              typename, typename, typename, typename>
+        friend class tuple;
   };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5>
-  class tuple<_T0, _T1, _T2, _T3, _T4, _T5, _NullClass, _NullClass, 
-             _NullClass, _NullClass>
-  {
-    _T0 __t0;
-    _T1 __t1;
-    _T2 __t2;
-    _T3 __t3;
-    _T4 __t4;
-    _T5 __t5;
-  public:
-    tuple()
-    { }
-      
-    explicit tuple(typename __add_const_ref<_T0>::type __in0, 
-                  typename __add_const_ref<_T1>::type __in1, 
-                  typename __add_const_ref<_T2>::type __in2, 
-                  typename __add_const_ref<_T3>::type __in3, 
-                  typename __add_const_ref<_T4>::type __in4, 
-                  typename __add_const_ref<_T5>::type __in5):
-      __t0(__in0), __t1(__in1), __t2(__in2), __t3(__in3), 
-      __t4(__in4), __t5(__in5)
-    { }
-      
-    tuple(const tuple& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2), 
-      __t3(__in.__t3), __t4(__in.__t4), __t5(__in.__t5)
-    { }
-    template <typename _U0, typename _U1, typename _U2, typename _U3, 
-             typename _U4, typename _U5>
-    tuple(const tuple<_U0, _U1, _U2, _U3, _U4, _U5>& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2), 
-      __t3(__in.__t3), __t4(__in.__t4), __t5(__in.__t5)
-    { }
-      
-    tuple& operator=(const tuple& __in)
-    {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      __t3=__in.__t3;
-      __t4=__in.__t4;
-      __t5=__in.__t5;
-      return *this;
-    }
-      
-    template <typename _U0, typename _U1, typename _U2, typename _U3, 
-             typename _U4, typename _U5>
-    tuple&
-    operator=(const tuple<_U0, _U1, _U2, _U3, _U4, _U5>& __in)
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5>
+    class tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _NullClass, _NullClass,
+               _NullClass, _NullClass>
     {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      __t3=__in.__t3;
-      __t4=__in.__t4;
-      __t5=__in.__t5;
-      return *this;
-    }
-    template<int __i, typename _U>
-    friend class __get_helper;
-    template<typename, typename, typename, typename, typename, typename, 
-            typename, typename, typename, typename>
-    friend class tuple;
+      _Tp0 _M_t0;
+      _Tp1 _M_t1;
+      _Tp2 _M_t2;
+      _Tp3 _M_t3;
+      _Tp4 _M_t4;
+      _Tp5 _M_t5;
+
+    public:
+      tuple()
+      { }
+
+      explicit tuple(typename __add_c_ref<_Tp0>::type __in0,
+                    typename __add_c_ref<_Tp1>::type __in1,
+                    typename __add_c_ref<_Tp2>::type __in2,
+                    typename __add_c_ref<_Tp3>::type __in3,
+                    typename __add_c_ref<_Tp4>::type __in4,
+                    typename __add_c_ref<_Tp5>::type __in5):
+        _M_t0(__in0), _M_t1(__in1), _M_t2(__in2), _M_t3(__in3), _M_t4(__in4),
+        _M_t5(__in5)
+      { }
+
+      tuple(const tuple& __in):
+        _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2),
+        _M_t3(__in._M_t3), _M_t4(__in._M_t4), _M_t5(__in._M_t5)
+      { }
+
+      template<typename _Up0, typename _Up1, typename _Up2, typename _Up3,
+              typename _Up4, typename _Up5>
+        tuple(const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5>& __in):
+         _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2),
+         _M_t3(__in._M_t3), _M_t4(__in._M_t4), _M_t5(__in._M_t5)
+        { }
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+        _M_t0=__in._M_t0;
+        _M_t1=__in._M_t1;
+        _M_t2=__in._M_t2;
+        _M_t3=__in._M_t3;
+        _M_t4=__in._M_t4;
+        _M_t5=__in._M_t5;
+        return *this;
+      }
+
+      template<typename _Up0, typename _Up1, typename _Up2, typename _Up3,
+              typename _Up4, typename _Up5>
+        tuple&
+        operator=(const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5>& __in)
+        {
+         _M_t0=__in._M_t0;
+         _M_t1=__in._M_t1;
+         _M_t2=__in._M_t2;
+         _M_t3=__in._M_t3;
+         _M_t4=__in._M_t4;
+         _M_t5=__in._M_t5;
+         return *this;
+        }
+
+      template<int __i, typename _Up>
+        friend class __get_helper;
+      template<typename, typename, typename, typename, typename, typename,
+              typename, typename, typename, typename>
+        friend class tuple;
   };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6>
-  class tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _NullClass, 
-             _NullClass, _NullClass>
-  {
-    _T0 __t0;
-    _T1 __t1;
-    _T2 __t2;
-    _T3 __t3;
-    _T4 __t4;
-    _T5 __t5;
-    _T6 __t6;
-  public:
-    tuple()
-    { }
-      
-    explicit tuple(typename __add_const_ref<_T0>::type __in0, 
-                  typename __add_const_ref<_T1>::type __in1, 
-                  typename __add_const_ref<_T2>::type __in2, 
-                  typename __add_const_ref<_T3>::type __in3, 
-                  typename __add_const_ref<_T4>::type __in4, 
-                  typename __add_const_ref<_T5>::type __in5, 
-                  typename __add_const_ref<_T6>::type __in6):
-      __t0(__in0), __t1(__in1), __t2(__in2), __t3(__in3), 
-      __t4(__in4), __t5(__in5), __t6(__in6)
-    { }
-      
-    tuple(const tuple& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2), 
-      __t3(__in.__t3), __t4(__in.__t4), __t5(__in.__t5), 
-      __t6(__in.__t6)
-    { }
-    template <typename _U0, typename _U1, typename _U2, typename _U3, 
-             typename _U4, typename _U5, typename _U6>
-    tuple(const tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6>& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2), 
-      __t3(__in.__t3), __t4(__in.__t4), __t5(__in.__t5), 
-      __t6(__in.__t6)
-    { }
-      
-    tuple& operator=(const tuple& __in)
-    {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      __t3=__in.__t3;
-      __t4=__in.__t4;
-      __t5=__in.__t5;
-      __t6=__in.__t6;
-      return *this;
-    }
-      
-    template <typename _U0, typename _U1, typename _U2, typename _U3, 
-             typename _U4, typename _U5, typename _U6>
-    tuple&
-    operator=(const tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6>& __in)
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6>
+    class tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _NullClass,
+               _NullClass, _NullClass>
     {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      __t3=__in.__t3;
-      __t4=__in.__t4;
-      __t5=__in.__t5;
-      __t6=__in.__t6;
-      return *this;
-    }
-    template<int __i, typename _U>
-    friend class __get_helper;
-    template<typename, typename, typename, typename, typename, typename, 
-            typename, typename, typename, typename>
-    friend class tuple;
+      _Tp0 _M_t0;
+      _Tp1 _M_t1;
+      _Tp2 _M_t2;
+      _Tp3 _M_t3;
+      _Tp4 _M_t4;
+      _Tp5 _M_t5;
+      _Tp6 _M_t6;
+
+    public:
+      tuple()
+      { }
+
+      explicit tuple(typename __add_c_ref<_Tp0>::type __in0,
+                    typename __add_c_ref<_Tp1>::type __in1,
+                    typename __add_c_ref<_Tp2>::type __in2,
+                    typename __add_c_ref<_Tp3>::type __in3,
+                    typename __add_c_ref<_Tp4>::type __in4,
+                    typename __add_c_ref<_Tp5>::type __in5,
+                    typename __add_c_ref<_Tp6>::type __in6):
+        _M_t0(__in0), _M_t1(__in1), _M_t2(__in2), _M_t3(__in3), _M_t4(__in4),
+        _M_t5(__in5), _M_t6(__in6)
+      { }
+
+      tuple(const tuple& __in):
+        _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2),
+        _M_t3(__in._M_t3), _M_t4(__in._M_t4), _M_t5(__in._M_t5),
+        _M_t6(__in._M_t6)
+      { }
+
+      template<typename _Up0, typename _Up1, typename _Up2, typename _Up3,
+              typename _Up4, typename _Up5, typename _Up6>
+        tuple(const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6>& __in):
+         _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2),
+         _M_t3(__in._M_t3), _M_t4(__in._M_t4), _M_t5(__in._M_t5),
+         _M_t6(__in._M_t6)
+        { }
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+        _M_t0=__in._M_t0;
+        _M_t1=__in._M_t1;
+        _M_t2=__in._M_t2;
+        _M_t3=__in._M_t3;
+        _M_t4=__in._M_t4;
+        _M_t5=__in._M_t5;
+        _M_t6=__in._M_t6;
+        return *this;
+      }
+
+      template<typename _Up0, typename _Up1, typename _Up2, typename _Up3,
+              typename _Up4, typename _Up5, typename _Up6>
+        tuple&
+        operator=(const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5,
+                             _Up6>& __in)
+        {
+         _M_t0=__in._M_t0;
+         _M_t1=__in._M_t1;
+         _M_t2=__in._M_t2;
+         _M_t3=__in._M_t3;
+         _M_t4=__in._M_t4;
+         _M_t5=__in._M_t5;
+         _M_t6=__in._M_t6;
+         return *this;
+        }
+
+      template<int __i, typename _Up>
+        friend class __get_helper;
+      template<typename, typename, typename, typename, typename, typename,
+              typename, typename, typename, typename>
+        friend class tuple;
   };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7>
-  class tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _NullClass, 
-             _NullClass>
-  {
-    _T0 __t0;
-    _T1 __t1;
-    _T2 __t2;
-    _T3 __t3;
-    _T4 __t4;
-    _T5 __t5;
-    _T6 __t6;
-    _T7 __t7;
-  public:
-    tuple()
-    { }
-      
-    explicit tuple(typename __add_const_ref<_T0>::type __in0, 
-                  typename __add_const_ref<_T1>::type __in1, 
-                  typename __add_const_ref<_T2>::type __in2, 
-                  typename __add_const_ref<_T3>::type __in3, 
-                  typename __add_const_ref<_T4>::type __in4, 
-                  typename __add_const_ref<_T5>::type __in5, 
-                  typename __add_const_ref<_T6>::type __in6, 
-                  typename __add_const_ref<_T7>::type __in7):
-      __t0(__in0), __t1(__in1), __t2(__in2), __t3(__in3), 
-      __t4(__in4), __t5(__in5), __t6(__in6), __t7(__in7)
-    { }
-      
-    tuple(const tuple& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2), 
-      __t3(__in.__t3), __t4(__in.__t4), __t5(__in.__t5), 
-      __t6(__in.__t6), __t7(__in.__t7)
-    { }
-    template <typename _U0, typename _U1, typename _U2, typename _U3, 
-             typename _U4, typename _U5, typename _U6, typename _U7>
-    tuple(const tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, _U7
-         >& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2), 
-      __t3(__in.__t3), __t4(__in.__t4), __t5(__in.__t5), 
-      __t6(__in.__t6), __t7(__in.__t7)
-    { }
-      
-    tuple& operator=(const tuple& __in)
-    {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      __t3=__in.__t3;
-      __t4=__in.__t4;
-      __t5=__in.__t5;
-      __t6=__in.__t6;
-      __t7=__in.__t7;
-      return *this;
-    }
-      
-    template <typename _U0, typename _U1, typename _U2, typename _U3, 
-             typename _U4, typename _U5, typename _U6, typename _U7>
-    tuple&
-    operator=(const tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, _U7
-             >& __in)
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7>
+    class tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _NullClass,
+               _NullClass>
     {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      __t3=__in.__t3;
-      __t4=__in.__t4;
-      __t5=__in.__t5;
-      __t6=__in.__t6;
-      __t7=__in.__t7;
-      return *this;
-    }
-    template<int __i, typename _U>
-    friend class __get_helper;
-    template<typename, typename, typename, typename, typename, typename, 
-            typename, typename, typename, typename>
-    friend class tuple;
+      _Tp0 _M_t0;
+      _Tp1 _M_t1;
+      _Tp2 _M_t2;
+      _Tp3 _M_t3;
+      _Tp4 _M_t4;
+      _Tp5 _M_t5;
+      _Tp6 _M_t6;
+      _Tp7 _M_t7;
+
+    public:
+      tuple()
+      { }
+
+      explicit tuple(typename __add_c_ref<_Tp0>::type __in0,
+                    typename __add_c_ref<_Tp1>::type __in1,
+                    typename __add_c_ref<_Tp2>::type __in2,
+                    typename __add_c_ref<_Tp3>::type __in3,
+                    typename __add_c_ref<_Tp4>::type __in4,
+                    typename __add_c_ref<_Tp5>::type __in5,
+                    typename __add_c_ref<_Tp6>::type __in6,
+                    typename __add_c_ref<_Tp7>::type __in7):
+        _M_t0(__in0), _M_t1(__in1), _M_t2(__in2), _M_t3(__in3), _M_t4(__in4),
+        _M_t5(__in5), _M_t6(__in6), _M_t7(__in7)
+      { }
+
+      tuple(const tuple& __in):
+        _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2),
+        _M_t3(__in._M_t3), _M_t4(__in._M_t4), _M_t5(__in._M_t5),
+        _M_t6(__in._M_t6), _M_t7(__in._M_t7)
+      { }
+
+      template<typename _Up0, typename _Up1, typename _Up2, typename _Up3,
+              typename _Up4, typename _Up5, typename _Up6, typename _Up7>
+        tuple(const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6,
+                         _Up7>& __in):
+         _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2),
+         _M_t3(__in._M_t3), _M_t4(__in._M_t4), _M_t5(__in._M_t5),
+         _M_t6(__in._M_t6), _M_t7(__in._M_t7)
+        { }
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+        _M_t0=__in._M_t0;
+        _M_t1=__in._M_t1;
+        _M_t2=__in._M_t2;
+        _M_t3=__in._M_t3;
+        _M_t4=__in._M_t4;
+        _M_t5=__in._M_t5;
+        _M_t6=__in._M_t6;
+        _M_t7=__in._M_t7;
+        return *this;
+      }
+
+      template<typename _Up0, typename _Up1, typename _Up2, typename _Up3,
+              typename _Up4, typename _Up5, typename _Up6, typename _Up7>
+        tuple&
+        operator=(const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6,
+                             _Up7>& __in)
+        {
+         _M_t0=__in._M_t0;
+         _M_t1=__in._M_t1;
+         _M_t2=__in._M_t2;
+         _M_t3=__in._M_t3;
+         _M_t4=__in._M_t4;
+         _M_t5=__in._M_t5;
+         _M_t6=__in._M_t6;
+         _M_t7=__in._M_t7;
+         return *this;
+        }
+
+      template<int __i, typename _Up>
+        friend class __get_helper;
+      template<typename, typename, typename, typename, typename, typename,
+              typename, typename, typename, typename>
+        friend class tuple;
   };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8>
-  class tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, 
-             _NullClass>
-  {
-    _T0 __t0;
-    _T1 __t1;
-    _T2 __t2;
-    _T3 __t3;
-    _T4 __t4;
-    _T5 __t5;
-    _T6 __t6;
-    _T7 __t7;
-    _T8 __t8;
-  public:
-    tuple()
-    { }
-      
-    explicit tuple(typename __add_const_ref<_T0>::type __in0, 
-                  typename __add_const_ref<_T1>::type __in1, 
-                  typename __add_const_ref<_T2>::type __in2, 
-                  typename __add_const_ref<_T3>::type __in3, 
-                  typename __add_const_ref<_T4>::type __in4, 
-                  typename __add_const_ref<_T5>::type __in5, 
-                  typename __add_const_ref<_T6>::type __in6, 
-                  typename __add_const_ref<_T7>::type __in7, 
-                  typename __add_const_ref<_T8>::type __in8):
-      __t0(__in0), __t1(__in1), __t2(__in2), __t3(__in3), 
-      __t4(__in4), __t5(__in5), __t6(__in6), __t7(__in7), 
-      __t8(__in8)
-    { }
-      
-    tuple(const tuple& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2), 
-      __t3(__in.__t3), __t4(__in.__t4), __t5(__in.__t5), 
-      __t6(__in.__t6), __t7(__in.__t7), __t8(__in.__t8)
-    { }
-    template <typename _U0, typename _U1, typename _U2, typename _U3, 
-             typename _U4, typename _U5, typename _U6, typename _U7, 
-             typename _U8>
-    tuple(const tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8
-         >& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2), 
-      __t3(__in.__t3), __t4(__in.__t4), __t5(__in.__t5), 
-      __t6(__in.__t6), __t7(__in.__t7), __t8(__in.__t8)
-    { }
-      
-    tuple& operator=(const tuple& __in)
-    {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      __t3=__in.__t3;
-      __t4=__in.__t4;
-      __t5=__in.__t5;
-      __t6=__in.__t6;
-      __t7=__in.__t7;
-      __t8=__in.__t8;
-      return *this;
-    }
-      
-    template <typename _U0, typename _U1, typename _U2, typename _U3, 
-             typename _U4, typename _U5, typename _U6, typename _U7, 
-             typename _U8>
-    tuple&
-    operator=(const tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, _U7, 
-             _U8>& __in)
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8>
+    class tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8, 
+               _NullClass>
     {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      __t3=__in.__t3;
-      __t4=__in.__t4;
-      __t5=__in.__t5;
-      __t6=__in.__t6;
-      __t7=__in.__t7;
-      __t8=__in.__t8;
-      return *this;
-    }
-    template<int __i, typename _U>
-    friend class __get_helper;
-    template<typename, typename, typename, typename, typename, typename, 
-            typename, typename, typename, typename>
-    friend class tuple;
+      _Tp0 _M_t0;
+      _Tp1 _M_t1;
+      _Tp2 _M_t2;
+      _Tp3 _M_t3;
+      _Tp4 _M_t4;
+      _Tp5 _M_t5;
+      _Tp6 _M_t6;
+      _Tp7 _M_t7;
+      _Tp8 _M_t8;
+
+    public:
+      tuple()
+      { }
+
+      explicit tuple(typename __add_c_ref<_Tp0>::type __in0,
+                    typename __add_c_ref<_Tp1>::type __in1,
+                    typename __add_c_ref<_Tp2>::type __in2,
+                    typename __add_c_ref<_Tp3>::type __in3,
+                    typename __add_c_ref<_Tp4>::type __in4,
+                    typename __add_c_ref<_Tp5>::type __in5,
+                    typename __add_c_ref<_Tp6>::type __in6,
+                    typename __add_c_ref<_Tp7>::type __in7,
+                    typename __add_c_ref<_Tp8>::type __in8):
+        _M_t0(__in0), _M_t1(__in1), _M_t2(__in2), _M_t3(__in3), _M_t4(__in4),
+        _M_t5(__in5), _M_t6(__in6), _M_t7(__in7), _M_t8(__in8)
+      { }
+
+      tuple(const tuple& __in):
+        _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2),
+        _M_t3(__in._M_t3), _M_t4(__in._M_t4), _M_t5(__in._M_t5),
+        _M_t6(__in._M_t6), _M_t7(__in._M_t7), _M_t8(__in._M_t8)
+      { }
+
+      template<typename _Up0, typename _Up1, typename _Up2, typename _Up3,
+              typename _Up4, typename _Up5, typename _Up6, typename _Up7,
+              typename _Up8>
+        tuple(const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7,
+                         _Up8>& __in):
+         _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2),
+         _M_t3(__in._M_t3), _M_t4(__in._M_t4), _M_t5(__in._M_t5),
+         _M_t6(__in._M_t6), _M_t7(__in._M_t7), _M_t8(__in._M_t8)
+        { }
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+        _M_t0=__in._M_t0;
+        _M_t1=__in._M_t1;
+        _M_t2=__in._M_t2;
+        _M_t3=__in._M_t3;
+        _M_t4=__in._M_t4;
+        _M_t5=__in._M_t5;
+        _M_t6=__in._M_t6;
+        _M_t7=__in._M_t7;
+        _M_t8=__in._M_t8;
+        return *this;
+      }
+
+      template<typename _Up0, typename _Up1, typename _Up2, typename _Up3,
+              typename _Up4, typename _Up5, typename _Up6, typename _Up7,
+              typename _Up8>
+        tuple&
+        operator=(const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7,
+                             _Up8>& __in)
+        {
+         _M_t0=__in._M_t0;
+         _M_t1=__in._M_t1;
+         _M_t2=__in._M_t2;
+         _M_t3=__in._M_t3;
+         _M_t4=__in._M_t4;
+         _M_t5=__in._M_t5;
+         _M_t6=__in._M_t6;
+         _M_t7=__in._M_t7;
+         _M_t8=__in._M_t8;
+         return *this;
+        }
+
+      template<int __i, typename _Up>
+        friend class __get_helper;
+      template<typename, typename, typename, typename, typename, typename,
+              typename, typename, typename, typename>
+        friend class tuple;
   };
-  
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-  class tuple
-  {
-    _T0 __t0;
-    _T1 __t1;
-    _T2 __t2;
-    _T3 __t3;
-    _T4 __t4;
-    _T5 __t5;
-    _T6 __t6;
-    _T7 __t7;
-    _T8 __t8;
-    _T9 __t9;
-  public:
-    tuple()
-    { }
-      
-    explicit tuple(typename __add_const_ref<_T0>::type __in0, 
-                  typename __add_const_ref<_T1>::type __in1, 
-                  typename __add_const_ref<_T2>::type __in2, 
-                  typename __add_const_ref<_T3>::type __in3, 
-                  typename __add_const_ref<_T4>::type __in4, 
-                  typename __add_const_ref<_T5>::type __in5, 
-                  typename __add_const_ref<_T6>::type __in6, 
-                  typename __add_const_ref<_T7>::type __in7, 
-                  typename __add_const_ref<_T8>::type __in8, 
-                  typename __add_const_ref<_T9>::type __in9):
-      __t0(__in0), __t1(__in1), __t2(__in2), __t3(__in3), 
-      __t4(__in4), __t5(__in5), __t6(__in6), __t7(__in7), 
-      __t8(__in8), __t9(__in9)
-    { }
-      
-    tuple(const tuple& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2), 
-      __t3(__in.__t3), __t4(__in.__t4), __t5(__in.__t5), 
-      __t6(__in.__t6), __t7(__in.__t7), __t8(__in.__t8), 
-      __t9(__in.__t9)
-    { }
-    template <typename _U0, typename _U1, typename _U2, typename _U3, 
-             typename _U4, typename _U5, typename _U6, typename _U7, 
-             typename _U8, typename _U9>
-    tuple(const tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, 
-         _U9>& __in):
-      __t0(__in.__t0), __t1(__in.__t1), __t2(__in.__t2), 
-      __t3(__in.__t3), __t4(__in.__t4), __t5(__in.__t5), 
-      __t6(__in.__t6), __t7(__in.__t7), __t8(__in.__t8), 
-      __t9(__in.__t9)
-    { }
-      
-    tuple& operator=(const tuple& __in)
-    {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      __t3=__in.__t3;
-      __t4=__in.__t4;
-      __t5=__in.__t5;
-      __t6=__in.__t6;
-      __t7=__in.__t7;
-      __t8=__in.__t8;
-      __t9=__in.__t9;
-      return *this;
-    }
-      
-    template <typename _U0, typename _U1, typename _U2, typename _U3, 
-             typename _U4, typename _U5, typename _U6, typename _U7, 
-             typename _U8, typename _U9>
-    tuple&
-    operator=(const tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, _U7, 
-             _U8, _U9>& __in)
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9>
+    class tuple
     {
-      __t0=__in.__t0;
-      __t1=__in.__t1;
-      __t2=__in.__t2;
-      __t3=__in.__t3;
-      __t4=__in.__t4;
-      __t5=__in.__t5;
-      __t6=__in.__t6;
-      __t7=__in.__t7;
-      __t8=__in.__t8;
-      __t9=__in.__t9;
-      return *this;
-    }
-    template<int __i, typename _U>
-    friend class __get_helper;
-    template<typename, typename, typename, typename, typename, typename, 
-            typename, typename, typename, typename>
-    friend class tuple;
+      _Tp0 _M_t0;
+      _Tp1 _M_t1;
+      _Tp2 _M_t2;
+      _Tp3 _M_t3;
+      _Tp4 _M_t4;
+      _Tp5 _M_t5;
+      _Tp6 _M_t6;
+      _Tp7 _M_t7;
+      _Tp8 _M_t8;
+      _Tp9 _M_t9;
+
+    public:
+      tuple()
+      { }
+
+      explicit tuple(typename __add_c_ref<_Tp0>::type __in0,
+                    typename __add_c_ref<_Tp1>::type __in1,
+                    typename __add_c_ref<_Tp2>::type __in2,
+                    typename __add_c_ref<_Tp3>::type __in3,
+                    typename __add_c_ref<_Tp4>::type __in4,
+                    typename __add_c_ref<_Tp5>::type __in5,
+                    typename __add_c_ref<_Tp6>::type __in6,
+                    typename __add_c_ref<_Tp7>::type __in7,
+                    typename __add_c_ref<_Tp8>::type __in8,
+                    typename __add_c_ref<_Tp9>::type __in9):
+        _M_t0(__in0), _M_t1(__in1), _M_t2(__in2), _M_t3(__in3), _M_t4(__in4),
+        _M_t5(__in5), _M_t6(__in6), _M_t7(__in7), _M_t8(__in8), _M_t9(__in9)
+      { }
+
+      tuple(const tuple& __in):
+        _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2),
+        _M_t3(__in._M_t3), _M_t4(__in._M_t4), _M_t5(__in._M_t5),
+        _M_t6(__in._M_t6), _M_t7(__in._M_t7), _M_t8(__in._M_t8),
+        _M_t9(__in._M_t9)
+      { }
+
+      template<typename _Up0, typename _Up1, typename _Up2, typename _Up3,
+              typename _Up4, typename _Up5, typename _Up6, typename _Up7,
+              typename _Up8, typename _Up9>
+        tuple(const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7, _Up8,
+                         _Up9>& __in):
+         _M_t0(__in._M_t0), _M_t1(__in._M_t1), _M_t2(__in._M_t2),
+         _M_t3(__in._M_t3), _M_t4(__in._M_t4), _M_t5(__in._M_t5),
+         _M_t6(__in._M_t6), _M_t7(__in._M_t7), _M_t8(__in._M_t8),
+         _M_t9(__in._M_t9)
+        { }
+
+      tuple&
+      operator=(const tuple& __in)
+      {
+        _M_t0=__in._M_t0;
+        _M_t1=__in._M_t1;
+        _M_t2=__in._M_t2;
+        _M_t3=__in._M_t3;
+        _M_t4=__in._M_t4;
+        _M_t5=__in._M_t5;
+        _M_t6=__in._M_t6;
+        _M_t7=__in._M_t7;
+        _M_t8=__in._M_t8;
+        _M_t9=__in._M_t9;
+        return *this;
+      }
+
+      template<typename _Up0, typename _Up1, typename _Up2, typename _Up3,
+              typename _Up4, typename _Up5, typename _Up6, typename _Up7,
+              typename _Up8, typename _Up9>
+        tuple&
+        operator=(const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7,
+                             _Up8, _Up9>& __in)
+        {
+         _M_t0=__in._M_t0;
+         _M_t1=__in._M_t1;
+         _M_t2=__in._M_t2;
+         _M_t3=__in._M_t3;
+         _M_t4=__in._M_t4;
+         _M_t5=__in._M_t5;
+         _M_t6=__in._M_t6;
+         _M_t7=__in._M_t7;
+         _M_t8=__in._M_t8;
+         _M_t9=__in._M_t9;
+         return *this;
+        }
+
+      template<int __i, typename _Up>
+        friend class __get_helper;
+      template<typename, typename, typename, typename, typename, typename,
+              typename, typename, typename, typename>
+        friend class tuple;
   };
-  
+
   // Class used in the implementation of get
-  template<int __i, typename _T>
+  template<int __i, typename _Tp>
     struct __get_helper;
 
-  template<typename _T>
-    struct __get_helper<0, _T>
+  template<typename _Tp>
+    struct __get_helper<0, _Tp>
     {
-      static typename __add_ref<typename tuple_element<0, _T>::type>::type
-      get_value(_T& __in) 
-      { return __in.__t0; }
+      static typename __add_ref<typename tuple_element<0, _Tp>::type>::type
+      get_value(_Tp& __in)
+      { return __in._M_t0; }
 
-      static typename __add_const_ref<typename tuple_element<0, _T>::type>::type
-      get_value(const _T& __in)
-      { return __in.__t0; }
+      static typename __add_c_ref<typename tuple_element<0, _Tp>::type>::type
+      get_value(const _Tp& __in)
+      { return __in._M_t0; }
     };
-  
-  template<typename _T>
-  struct __get_helper<1, _T>
-  {
-    static typename __add_ref<typename tuple_element<1, _T>::type>::type
-    get_value(_T& __in)
-    {
-      return __in.__t1;
-    }
-    static typename __add_const_ref<typename tuple_element<1, _T>::type>::type
-    get_value(const _T& __in)
-    {
-      return __in.__t1;
-    }
-  };
-  
-  template<typename _T>
-  struct __get_helper<2, _T>
-  {
-    static typename __add_ref<typename tuple_element<2, _T>::type>::type
-    get_value(_T& __in)
-    {
-      return __in.__t2;
-    }
-    static typename __add_const_ref<typename tuple_element<2, _T>::type>::type
-    get_value(const _T& __in)
-    {
-      return __in.__t2;
-    }
-  };
-  
-  template<typename _T>
-  struct __get_helper<3, _T>
-  {
-    static typename __add_ref<typename tuple_element<3, _T>::type>::type
-    get_value(_T& __in)
-    {
-      return __in.__t3;
-    }
-    static typename __add_const_ref<typename tuple_element<3, _T>::type>::type
-    get_value(const _T& __in)
-    {
-      return __in.__t3;
-    }
-  };
-  
-  template<typename _T>
-  struct __get_helper<4, _T>
-  {
-    static typename __add_ref<typename tuple_element<4, _T>::type>::type
-    get_value(_T& __in)
-    {
-      return __in.__t4;
-    }
-    static typename __add_const_ref<typename tuple_element<4, _T>::type>::type
-    get_value(const _T& __in)
-    {
-      return __in.__t4;
-    }
-  };
-  
-  template<typename _T>
-  struct __get_helper<5, _T>
-  {
-    static typename __add_ref<typename tuple_element<5, _T>::type>::type
-    get_value(_T& __in)
-    {
-      return __in.__t5;
-    }
-    static typename __add_const_ref<typename tuple_element<5, _T>::type>::type
-    get_value(const _T& __in)
+
+  template<typename _Tp>
+    struct __get_helper<1, _Tp>
     {
-      return __in.__t5;
-    }
-  };
-  
-  template<typename _T>
-  struct __get_helper<6, _T>
-  {
-    static typename __add_ref<typename tuple_element<6, _T>::type>::type
-    get_value(_T& __in)
+      static typename __add_ref<typename tuple_element<1, _Tp>::type>::type
+      get_value(_Tp& __in)
+      { return __in._M_t1; }
+
+      static typename __add_c_ref<typename tuple_element<1, _Tp>::type>::type
+      get_value(const _Tp& __in)
+      { return __in._M_t1; }
+    };
+
+  template<typename _Tp>
+    struct __get_helper<2, _Tp>
     {
-      return __in.__t6;
-    }
-    static typename __add_const_ref<typename tuple_element<6, _T>::type>::type
-    get_value(const _T& __in)
+      static typename __add_ref<typename tuple_element<2, _Tp>::type>::type
+      get_value(_Tp& __in)
+      { return __in._M_t2; }
+
+      static typename __add_c_ref<typename tuple_element<2, _Tp>::type>::type
+      get_value(const _Tp& __in)
+      { return __in._M_t2; }
+    };
+
+  template<typename _Tp>
+    struct __get_helper<3, _Tp>
     {
-      return __in.__t6;
-    }
-  };
-  
-  template<typename _T>
-  struct __get_helper<7, _T>
-  {
-    static typename __add_ref<typename tuple_element<7, _T>::type>::type
-    get_value(_T& __in)
+      static typename __add_ref<typename tuple_element<3, _Tp>::type>::type
+      get_value(_Tp& __in)
+      { return __in._M_t3; }
+
+      static typename __add_c_ref<typename tuple_element<3, _Tp>::type>::type
+      get_value(const _Tp& __in)
+      { return __in._M_t3; }
+    };
+
+  template<typename _Tp>
+    struct __get_helper<4, _Tp>
     {
-      return __in.__t7;
-    }
-    static typename __add_const_ref<typename tuple_element<7, _T>::type>::type
-    get_value(const _T& __in)
+      static typename __add_ref<typename tuple_element<4, _Tp>::type>::type
+      get_value(_Tp& __in)
+      { return __in._M_t4; }
+
+      static typename __add_c_ref<typename tuple_element<4, _Tp>::type>::type
+      get_value(const _Tp& __in)
+      { return __in._M_t4; }
+    };
+
+  template<typename _Tp>
+    struct __get_helper<5, _Tp>
     {
-      return __in.__t7;
-    }
-  };
-  
-  template<typename _T>
-  struct __get_helper<8, _T>
-  {
-    static typename __add_ref<typename tuple_element<8, _T>::type>::type
-    get_value(_T& __in)
+      static typename __add_ref<typename tuple_element<5, _Tp>::type>::type
+      get_value(_Tp& __in)
+      { return __in._M_t5; }
+
+      static typename __add_c_ref<typename tuple_element<5, _Tp>::type>::type
+      get_value(const _Tp& __in)
+      { return __in._M_t5; }
+    };
+
+  template<typename _Tp>
+    struct __get_helper<6, _Tp>
     {
-      return __in.__t8;
-    }
-    static typename __add_const_ref<typename tuple_element<8, _T>::type>::type
-    get_value(const _T& __in)
+      static typename __add_ref<typename tuple_element<6, _Tp>::type>::type
+      get_value(_Tp& __in)
+      { return __in._M_t6; }
+
+      static typename __add_c_ref<typename tuple_element<6, _Tp>::type>::type
+      get_value(const _Tp& __in)
+      { return __in._M_t6; }
+    };
+
+  template<typename _Tp>
+    struct __get_helper<7, _Tp>
     {
-      return __in.__t8;
-    }
-  };
-  
-  template<typename _T>
-  struct __get_helper<9, _T>
-  {
-    static typename __add_ref<typename tuple_element<9, _T>::type>::type
-    get_value(_T& __in)
+      static typename __add_ref<typename tuple_element<7, _Tp>::type>::type
+      get_value(_Tp& __in)
+      { return __in._M_t7; }
+
+      static typename __add_c_ref<typename tuple_element<7, _Tp>::type>::type
+      get_value(const _Tp& __in)
+      { return __in._M_t7; }
+    };
+
+  template<typename _Tp>
+    struct __get_helper<8, _Tp>
     {
-      return __in.__t9;
-    }
-    static typename __add_const_ref<typename tuple_element<9, _T>::type>::type
-    get_value(const _T& __in)
+      static typename __add_ref<typename tuple_element<8, _Tp>::type>::type
+      get_value(_Tp& __in)
+      { return __in._M_t8; }
+
+      static typename __add_c_ref<typename tuple_element<8, _Tp>::type>::type
+      get_value(const _Tp& __in)
+      { return __in._M_t8; }
+    };
+
+  template<typename _Tp>
+    struct __get_helper<9, _Tp>
     {
-      return __in.__t9;
-    }
-  };
-  
+      static typename __add_ref<typename tuple_element<9, _Tp>::type>::type
+      get_value(_Tp& __in)
+      { return __in._M_t9; }
+
+      static typename __add_c_ref<typename tuple_element<9, _Tp>::type>::type
+      get_value(const _Tp& __in)
+      { return __in._M_t9; }
+    };
+
   /* Returns a reference to the ith element of a tuple.
    * Any const or non-const ref elements are returned with their original type
    */
-  template<int __i, typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-  typename __add_ref<typename tuple_element<__i,tuple<_T0, _T1, _T2, _T3, 
-                                                     _T4, _T5, _T6, _T7, _T8, _T9> >::type>::type
-  get(tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9>& __t)
-  {
-    return __get_helper<__i,tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, 
-      _T7, _T8, _T9> >::get_value(__t);
-  }
+  template<int __i, typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+                   typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+                   typename _Tp8, typename _Tp9>
+    typename __add_ref<typename tuple_element<__i, tuple<_Tp0, _Tp1, _Tp2,
+                                                        _Tp3, _Tp4, _Tp5,
+                                                        _Tp6, _Tp7, _Tp8,
+                                                        _Tp9> >::type>::type
+    get(tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8,
+             _Tp9>& __t)
+    {
+      return __get_helper<__i, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                    _Tp7, _Tp8, _Tp9> >::get_value(__t);
+    }
 
   /* Returns a const reference to the ith element of a tuple.
    * Any const or non-const ref elements are returned with their original type
    */
-  template<int __i, typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-  typename __add_const_ref<typename tuple_element<__i,tuple<_T0, _T1, _T2, 
-                                                           _T3, _T4, _T5, _T6, _T7, _T8, _T9> >::type>::type
-  get(const tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9
-      >& __t)
-  {
-    return __get_helper<__i,tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, 
-      _T7, _T8, _T9> >::get_value(__t);
-  }
+  template<int __i, typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+                   typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+                   typename _Tp8, typename _Tp9>
+    typename __add_c_ref<typename tuple_element<__i, tuple<_Tp0, _Tp1, _Tp2,
+                                                          _Tp3, _Tp4, _Tp5,
+                                                          _Tp6, _Tp7, _Tp8,
+                                                          _Tp9> >::type>::type
+    get(const tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8,
+                   _Tp9>& __t)
+    {
+      return __get_helper<__i, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                    _Tp7, _Tp8, _Tp9> >::get_value(__t);
+    }
 
   // This class helps construct the various comparison operations on tuples
-  template<int __check_equal_size, int __i, int __j, typename _T, typename _U>
-  struct __tuple_compare;
+  template<int __check_equal_size, int __i, int __j, typename _Tp, typename _Up>
+    struct __tuple_compare;
 
-  template<int __i, int __j, typename _T, typename _U>
-  struct __tuple_compare<0, __i, __j, _T, _U>
-  {
-    static bool __eq(const _T& __t, const _U& __u)
-    {
-      return get<__i>(__t) == get<__i>(__u) &&
-       __tuple_compare<0, __i+1, __j, _T, _U>::__eq(__t, __u) ;
-    }
-    static bool __neq(const _T& __t, const _U& __u)
-    {
-      return get<__i>(__t) != get<__i>(__u) ||
-       __tuple_compare<0, __i+1, __j, _T, _U>::__neq(__t, __u) ;
-    }
-    static bool __less(const _T& __t, const _U& __u)
-    {
-      return (get<__i>(__t) < get<__i>(__u)) || !(get<__i>(__u) < get<__i>(__t)) &&
-       __tuple_compare<0, __i+1, __j, _T, _U>::__less(__t, __u) ;
-    }
-    static bool __greater(const _T& __t, const _U& __u)
-    {
-      return (get<__i>(__t) > get<__i>(__u)) || !(get<__i>(__u) > get<__i>(__t)) &&
-       __tuple_compare<0, __i+1, __j, _T, _U>::__greater(__t, __u) ;
-    }
-    static bool __leq(const _T& __t, const _U& __u)
-    {
-      return (get<__i>(__t) <= get<__i>(__u)) && (!(get<__i>(__u)<=get<__i>(__t)) ||
-                                                 __tuple_compare<0, __i+1, __j, _T, _U>::__leq(__t, __u) );
-    }
-    static bool __geq(const _T& __t, const _U& __u)
+  template<int __i, int __j, typename _Tp, typename _Up>
+    struct __tuple_compare<0, __i, __j, _Tp, _Up>
     {
-      return (get<__i>(__t) >= get<__i>(__u)) && (!(get<__i>(__u)>=get<__i>(__t)) ||
-                                                 __tuple_compare<0, __i+1, __j, _T, _U>::__geq(__t, __u) );
-    }
-  };
-  
-  template<int __i, typename _T, typename _U>
-  struct __tuple_compare<0, __i, __i, _T, _U>
-  {
-    static bool __eq(const _T&, const _U&)
-    {
-      return true;
-    }
-    static bool __neq(const _T&, const _U&)
-    {
-      return false;
-    }
-    static bool __leq(const _T&, const _U&)
-    {
-      return true;
-    }
-    static bool __geq(const _T&, const _U&)
-    {
-      return true;
-    }
-    static bool __less(const _T&, const _U&)
-    {
-      return false;
-    }
-    static bool __greater(const _T&, const _U&)
+      static bool __eq(const _Tp& __t, const _Up& __u)
+      {
+        return get<__i>(__t) == get<__i>(__u) &&
+           __tuple_compare<0, __i+1, __j, _Tp, _Up>::__eq(__t, __u);
+      }
+      static bool __neq(const _Tp& __t, const _Up& __u)
+      {
+        return get<__i>(__t) != get<__i>(__u) ||
+           __tuple_compare<0, __i+1, __j, _Tp, _Up>::__neq(__t, __u);
+      }
+      static bool __less(const _Tp& __t, const _Up& __u)
+      {
+        return (get<__i>(__t) < get<__i>(__u)) || !(get<__i>(__u) < get<__i>(__t)) &&
+           __tuple_compare<0, __i+1, __j, _Tp, _Up>::__less(__t, __u);
+      }
+      static bool __greater(const _Tp& __t, const _Up& __u)
+      {
+        return (get<__i>(__t) > get<__i>(__u)) || !(get<__i>(__u) > get<__i>(__t)) &&
+           __tuple_compare<0, __i+1, __j, _Tp, _Up>::__greater(__t, __u);
+      }
+      static bool __leq(const _Tp& __t, const _Up& __u)
+      {
+        return (get<__i>(__t) <= get<__i>(__u)) && (!(get<__i>(__u)<=get<__i>(__t)) ||
+                                                  __tuple_compare<0, __i+1, __j, _Tp, _Up>::__leq(__t, __u));
+      }
+      static bool __geq(const _Tp& __t, const _Up& __u)
+      {
+        return (get<__i>(__t) >= get<__i>(__u)) && (!(get<__i>(__u)>=get<__i>(__t)) ||
+                                                  __tuple_compare<0, __i+1, __j, _Tp, _Up>::__geq(__t, __u));
+      }
+    };
+
+  template<int __i, typename _Tp, typename _Up>
+    struct __tuple_compare<0, __i, __i, _Tp, _Up>
     {
-      return false;
-    }
-  };
+      static bool __eq(const _Tp&, const _Up&)
+      { return true; }
+      static bool __neq(const _Tp&, const _Up&)
+      { return false; }
+      static bool __leq(const _Tp&, const _Up&)
+      { return true; }
+      static bool __geq(const _Tp&, const _Up&)
+      { return true; }
+      static bool __less(const _Tp&, const _Up&)
+      { return false; }
+      static bool __greater(const _Tp&, const _Up&)
+      { return false; }
+    };
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9, typename _U0, typename _U1, 
-          typename _U2, typename _U3, typename _U4, typename _U5, 
-          typename _U6, typename _U7, typename _U8, typename _U9>
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9, typename _Up0, typename _Up1,
+          typename _Up2, typename _Up3, typename _Up4, typename _Up5,
+          typename _Up6, typename _Up7, typename _Up8, typename _Up9>
   bool
-  operator==(const tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, 
-            _T9>& __t, const tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, 
-            _U7, _U8, _U9>& __u)
+  operator==(const tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8, _Tp9>& __t,
+            const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7, _Up8, _Up9>& __u)
   {
-    typedef tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9
-      > __T_tuple;
-    typedef tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9
-      > __U_tuple;
-    return __tuple_compare<tuple_size<__T_tuple>::value -
-      tuple_size<__U_tuple>::value, 0,
-      tuple_size<__T_tuple>::value, __T_tuple, __U_tuple>::__eq(__t, __u);
+    typedef tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8,
+                 _Tp9> __t_tuple;
+    typedef tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7, _Up8,
+                 _Up9> __u_tuple;
+    return __tuple_compare<tuple_size<__t_tuple>::value -
+     tuple_size<__u_tuple>::value, 0,
+      tuple_size<__t_tuple>::value, __t_tuple, __u_tuple>::__eq(__t, __u);
   }
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9, typename _U0, typename _U1, 
-          typename _U2, typename _U3, typename _U4, typename _U5, 
-          typename _U6, typename _U7, typename _U8, typename _U9>
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9, typename _Up0, typename _Up1,
+          typename _Up2, typename _Up3, typename _Up4, typename _Up5,
+          typename _Up6, typename _Up7, typename _Up8, typename _Up9>
   bool
-  operator!=(const tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, 
-            _T9>& __t, const tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, 
-            _U7, _U8, _U9>& __u)
+  operator!=(const tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8, _Tp9>& __t,
+            const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7, _Up8, _Up9>& __u)
   {
-    typedef tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9
-      > __T_tuple;
-    typedef tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9
-      > __U_tuple;
-    return __tuple_compare<tuple_size<__T_tuple>::value -
-      tuple_size<__U_tuple>::value, 0,
-      tuple_size<__T_tuple>::value, __T_tuple, __U_tuple>::__neq(__t, __u);
+    typedef tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8,
+                 _Tp9> __t_tuple;
+    typedef tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7, _Up8,
+                 _Up9> __u_tuple;
+    return __tuple_compare<tuple_size<__t_tuple>::value -
+     tuple_size<__u_tuple>::value, 0,
+      tuple_size<__t_tuple>::value, __t_tuple, __u_tuple>::__neq(__t, __u);
   }
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9, typename _U0, typename _U1, 
-          typename _U2, typename _U3, typename _U4, typename _U5, 
-          typename _U6, typename _U7, typename _U8, typename _U9>
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9, typename _Up0, typename _Up1,
+          typename _Up2, typename _Up3, typename _Up4, typename _Up5,
+          typename _Up6, typename _Up7, typename _Up8, typename _Up9>
   bool
-  operator<(const tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, 
-           _T9>& __t, const tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, 
-           _U7, _U8, _U9>& __u)
+  operator<(const tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8, _Tp9>& __t,
+           const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7, _Up8, _Up9>& __u)
   {
-    typedef tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9
-      > __T_tuple;
-    typedef tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9
-      > __U_tuple;
-    return __tuple_compare<tuple_size<__T_tuple>::value -
-      tuple_size<__U_tuple>::value, 0,
-      tuple_size<__T_tuple>::value, __T_tuple, __U_tuple>::__less(__t, __u);
+    typedef tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8,
+                 _Tp9> __t_tuple;
+    typedef tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7, _Up8,
+                 _Up9> __u_tuple;
+    return __tuple_compare<tuple_size<__t_tuple>::value -
+     tuple_size<__u_tuple>::value, 0,
+      tuple_size<__t_tuple>::value, __t_tuple, __u_tuple>::__less(__t, __u);
   }
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9, typename _U0, typename _U1, 
-          typename _U2, typename _U3, typename _U4, typename _U5, 
-          typename _U6, typename _U7, typename _U8, typename _U9>
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9, typename _Up0, typename _Up1,
+          typename _Up2, typename _Up3, typename _Up4, typename _Up5,
+          typename _Up6, typename _Up7, typename _Up8, typename _Up9>
   bool
-  operator>(const tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, 
-           _T9>& __t, const tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, 
-           _U7, _U8, _U9>& __u)
+  operator>(const tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8, _Tp9>& __t,
+           const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7, _Up8, _Up9>& __u)
   {
-    typedef tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9
-      > __T_tuple;
-    typedef tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9
-      > __U_tuple;
-    return __tuple_compare<tuple_size<__T_tuple>::value -
-      tuple_size<__U_tuple>::value, 0,
-      tuple_size<__T_tuple>::value, __T_tuple, __U_tuple>::__greater(__t, __u);
+    typedef tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8,
+                 _Tp9> __t_tuple;
+    typedef tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7, _Up8,
+                 _Up9> __u_tuple;
+    return __tuple_compare<tuple_size<__t_tuple>::value -
+     tuple_size<__u_tuple>::value, 0,
+      tuple_size<__t_tuple>::value, __t_tuple, __u_tuple>::__greater(__t, __u);
   }
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9, typename _U0, typename _U1, 
-          typename _U2, typename _U3, typename _U4, typename _U5, 
-          typename _U6, typename _U7, typename _U8, typename _U9>
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9, typename _Up0, typename _Up1,
+          typename _Up2, typename _Up3, typename _Up4, typename _Up5,
+          typename _Up6, typename _Up7, typename _Up8, typename _Up9>
   bool
-  operator<=(const tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, 
-            _T9>& __t, const tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, 
-            _U7, _U8, _U9>& __u)
+  operator<=(const tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8, _Tp9>& __t,
+            const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7, _Up8, _Up9>& __u)
   {
-    typedef tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9
-      > __T_tuple;
-    typedef tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9
-      > __U_tuple;
-    return __tuple_compare<tuple_size<__T_tuple>::value -
-      tuple_size<__U_tuple>::value, 0,
-      tuple_size<__T_tuple>::value, __T_tuple, __U_tuple>::__leq(__t, __u);
+    typedef tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8,
+                 _Tp9> __t_tuple;
+    typedef tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7, _Up8,
+                 _Up9> __u_tuple;
+    return __tuple_compare<tuple_size<__t_tuple>::value -
+     tuple_size<__u_tuple>::value, 0,
+      tuple_size<__t_tuple>::value, __t_tuple, __u_tuple>::__leq(__t, __u);
   }
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9, typename _U0, typename _U1, 
-          typename _U2, typename _U3, typename _U4, typename _U5, 
-          typename _U6, typename _U7, typename _U8, typename _U9>
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9, typename _Up0, typename _Up1,
+          typename _Up2, typename _Up3, typename _Up4, typename _Up5,
+          typename _Up6, typename _Up7, typename _Up8, typename _Up9>
   bool
-  operator>=(const tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, 
-            _T9>& __t, const tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, 
-            _U7, _U8, _U9>& __u)
+  operator>=(const tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8, _Tp9>& __t,
+            const tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7, _Up8, _Up9>& __u)
   {
-    typedef tuple<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9
-      > __T_tuple;
-    typedef tuple<_U0, _U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9
-      > __U_tuple;
-    return __tuple_compare<tuple_size<__T_tuple>::value -
-      tuple_size<__U_tuple>::value, 0,
-      tuple_size<__T_tuple>::value, __T_tuple, __U_tuple>::__geq(__t, __u);
+    typedef tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8,
+                 _Tp9> __t_tuple;
+    typedef tuple<_Up0, _Up1, _Up2, _Up3, _Up4, _Up5, _Up6, _Up7, _Up8,
+                 _Up9> __u_tuple;
+    return __tuple_compare<tuple_size<__t_tuple>::value -
+     tuple_size<__u_tuple>::value, 0,
+      tuple_size<__t_tuple>::value, __t_tuple, __u_tuple>::__geq(__t, __u);
   }
 
   // Provides a way to annotate that a reference to
   // an object should be passed.
-  template<typename _T>
-  class reference_wrapper
-  {
-    _T& __data;
-
-  public:
-    typedef _T type;
-
-    explicit reference_wrapper(_T& __indata): __data(__indata)
-    { }
-    
-    operator _T&() const
-    { return this->get(); }
-    
-    _T&
-    get() const
-    { return __data; }
-  };
+  template<typename _Tp>
+    class reference_wrapper
+    {
+      _Tp& _M_data;
+      public:
+        typedef _Tp type;
+        explicit reference_wrapper(_Tp& __indata): _M_data(__indata)
+        { }
+
+        operator _Tp& () const
+        {
+         return this->get();
+        }
+
+        _Tp&
+        get() const
+        {
+         return _M_data;
+        }
+    };
 
   // Denotes a reference should be taken to a variable.
-  template<typename _T>
-    reference_wrapper<_T>
-    ref(_T& __t)
-    { return reference_wrapper<_T>(__t); }
+  template<typename _Tp>
+    reference_wrapper<_Tp>
+    ref(_Tp& __t)
+    {
+      return reference_wrapper<_Tp>(__t);
+    }
 
   // Denotes a const reference should be taken to a variable.
-  template<typename _T>
-    reference_wrapper<_T const>
-    cref(const _T& __t)
-    { return reference_wrapper<_T const>(__t); }
+  template<typename _Tp>
+    reference_wrapper<_Tp const>
+    cref(const _Tp& __t)
+    {
+      return reference_wrapper<_Tp const>(__t);
+    }
 
   // Helper which adds a reference to a type when given a reference_wrapper
-  template<typename _T>
+  template<typename _Tp>
     struct __strip_reference_wrapper
-    { typedef _T __type; };
+    {
+        typedef _Tp __type;
+    };
 
-  template<typename _T>
-    struct __strip_reference_wrapper<reference_wrapper<_T> >
-    { typedef _T& __type; };
+  template<typename _Tp>
+    struct __strip_reference_wrapper<reference_wrapper<_Tp> >
+    {
+      typedef _Tp& __type;
+    };
 
-  template<typename _T>
-    struct __strip_reference_wrapper<const reference_wrapper<_T> >
-    { typedef _T& __type; };
+  template<typename _Tp>
+    struct __strip_reference_wrapper<const reference_wrapper<_Tp> >
+    {
+        typedef _Tp& __type;
+    };
 
-  template<typename _T0 = _NullClass, typename _T1 = _NullClass, 
-          typename _T2 = _NullClass, typename _T3 = _NullClass, 
-          typename _T4 = _NullClass, typename _T5 = _NullClass, 
-          typename _T6 = _NullClass, typename _T7 = _NullClass, 
-          typename _T8 = _NullClass, typename _T9 = _NullClass>
+  template<typename _Tp0 = _NullClass, typename _Tp1 = _NullClass,
+          typename _Tp2 = _NullClass, typename _Tp3 = _NullClass,
+          typename _Tp4 = _NullClass, typename _Tp5 = _NullClass,
+          typename _Tp6 = _NullClass, typename _Tp7 = _NullClass,
+          typename _Tp8 = _NullClass, typename _Tp9 = _NullClass>
     struct __stripped_tuple_type
     {
-      typedef tuple<typename __strip_reference_wrapper<_T0>::__type, 
-                   typename __strip_reference_wrapper<_T1>::__type, 
-                   typename __strip_reference_wrapper<_T2>::__type, 
-                   typename __strip_reference_wrapper<_T3>::__type, 
-                   typename __strip_reference_wrapper<_T4>::__type, 
-                   typename __strip_reference_wrapper<_T5>::__type, 
-                   typename __strip_reference_wrapper<_T6>::__type, 
-                   typename __strip_reference_wrapper<_T7>::__type, 
-                   typename __strip_reference_wrapper<_T8>::__type, 
-                   typename __strip_reference_wrapper<_T9>::__type>  __type;
+      typedef tuple<typename __strip_reference_wrapper<_Tp0>::__type,
+                   typename __strip_reference_wrapper<_Tp1>::__type,
+                   typename __strip_reference_wrapper<_Tp2>::__type,
+                   typename __strip_reference_wrapper<_Tp3>::__type,
+                   typename __strip_reference_wrapper<_Tp4>::__type,
+                   typename __strip_reference_wrapper<_Tp5>::__type,
+                   typename __strip_reference_wrapper<_Tp6>::__type,
+                   typename __strip_reference_wrapper<_Tp7>::__type,
+                   typename __strip_reference_wrapper<_Tp8>::__type,
+                   typename __strip_reference_wrapper<_Tp9>::__type>      __type;
     };
 
   tuple<>
   make_tuple()
-  {
-    return tuple<>();
-  };
+  { return tuple<>(); }
 
-  template<typename _T0>
-  typename __stripped_tuple_type<_T0>::__type
-  make_tuple(_T0 __t0)
-  {
-    return typename  __stripped_tuple_type<_T0>::__type(__t0);};
+  template< typename _Tp0>
+    typename __stripped_tuple_type< _Tp0>::__type
+    make_tuple( _Tp0 __t0)
+    {
+      return typename  __stripped_tuple_type< _Tp0>::
+        __type( __t0);
+    }
 
-  template<typename _T0, typename _T1>
-  typename __stripped_tuple_type<_T0, _T1>::__type
-  make_tuple(_T0 __t0, _T1 __t1)
-  {
-    return typename  __stripped_tuple_type<_T0, _T1>::__type(__t0, __t1);};
+  template<typename _Tp0, typename _Tp1>
+    typename __stripped_tuple_type<_Tp0, _Tp1>::__type
+    make_tuple(_Tp0 __t0, _Tp1 __t1)
+    {
+      return typename  __stripped_tuple_type<_Tp0, _Tp1>::
+        __type(__t0, __t1);
+    }
 
-  template<typename _T0, typename _T1, typename _T2>
-  typename __stripped_tuple_type<_T0, _T1, _T2>::__type
-  make_tuple(_T0 __t0, _T1 __t1, _T2 __t2)
-  {
-    return typename __stripped_tuple_type<_T0, _T1, _T2>::__type(__t0, __t1, __t2);};
+  template<typename _Tp0, typename _Tp1, typename _Tp2>
+    typename __stripped_tuple_type<_Tp0, _Tp1, _Tp2>::__type
+    make_tuple(_Tp0 __t0, _Tp1 __t1, _Tp2 __t2)
+    {
+      return typename  __stripped_tuple_type<_Tp0, _Tp1, _Tp2>::
+        __type(__t0, __t1, __t2);
+    }
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3>
-  typename __stripped_tuple_type<_T0, _T1, _T2, _T3>::__type
-  make_tuple(_T0 __t0, _T1 __t1, _T2 __t2, _T3 __t3)
-  {
-    return typename  __stripped_tuple_type<_T0, _T1, _T2, _T3>::__type(__t0, __t1, __t2, __t3);};
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3>
+    typename __stripped_tuple_type<_Tp0, _Tp1, _Tp2, _Tp3>::__type
+    make_tuple(_Tp0 __t0, _Tp1 __t1, _Tp2 __t2, _Tp3 __t3)
+    {
+      return typename  __stripped_tuple_type<_Tp0, _Tp1, _Tp2, _Tp3>::
+        __type(__t0, __t1, __t2, __t3);
+    }
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4>
-  typename __stripped_tuple_type<_T0, _T1, _T2, _T3, _T4>::__type
-  make_tuple(_T0 __t0, _T1 __t1, _T2 __t2, _T3 __t3, _T4 __t4)
-  {
-    return typename  __stripped_tuple_type<_T0, _T1, _T2, _T3, _T4>::__type(__t0, __t1, __t2, __t3, __t4);};
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4>
+    typename __stripped_tuple_type<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4>::__type
+    make_tuple(_Tp0 __t0, _Tp1 __t1, _Tp2 __t2, _Tp3 __t3, _Tp4 __t4)
+    {
+      return typename  __stripped_tuple_type<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4>::
+        __type(__t0, __t1, __t2, __t3, __t4);
+    }
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5>
-  typename __stripped_tuple_type<_T0, _T1, _T2, _T3, _T4, _T5>::__type
-  make_tuple(_T0 __t0, _T1 __t1, _T2 __t2, _T3 __t3, _T4 __t4, 
-            _T5 __t5)
-  {
-    return typename  __stripped_tuple_type<_T0, _T1, _T2, _T3, _T4, _T5
-      >::__type(__t0, __t1, __t2, __t3, __t4, __t5);};
-
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6>
-  typename __stripped_tuple_type<_T0, _T1, _T2, _T3, _T4, _T5, _T6
-                                >::__type
-  make_tuple(_T0 __t0, _T1 __t1, _T2 __t2, _T3 __t3, _T4 __t4, 
-            _T5 __t5, _T6 __t6)
-  {
-    return typename  __stripped_tuple_type<_T0, _T1, _T2, _T3, _T4, _T5, 
-      _T6>::__type(__t0, __t1, __t2, __t3, __t4, __t5, __t6);};
-
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7>
-  typename __stripped_tuple_type<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7
-                                >::__type
-  make_tuple(_T0 __t0, _T1 __t1, _T2 __t2, _T3 __t3, _T4 __t4, 
-            _T5 __t5, _T6 __t6, _T7 __t7)
-  {
-    return typename  __stripped_tuple_type<_T0, _T1, _T2, _T3, _T4, _T5, 
-      _T6, _T7>::__type(__t0, __t1, __t2, __t3, __t4, __t5, __t6, __t7);};
-
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8>
-  typename __stripped_tuple_type<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, 
-                                _T8>::__type
-  make_tuple(_T0 __t0, _T1 __t1, _T2 __t2, _T3 __t3, _T4 __t4, 
-            _T5 __t5, _T6 __t6, _T7 __t7, _T8 __t8)
-  {
-    return typename  __stripped_tuple_type<_T0, _T1, _T2, _T3, _T4, _T5, 
-      _T6, _T7, _T8>::__type(__t0, __t1, __t2, __t3, __t4, __t5, __t6, __t7, __t8);};
-
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-  typename __stripped_tuple_type<_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, 
-                                _T8, _T9>::__type
-  make_tuple(_T0 __t0, _T1 __t1, _T2 __t2, _T3 __t3, _T4 __t4, 
-            _T5 __t5, _T6 __t6, _T7 __t7, _T8 __t8, _T9 __t9)
-  {
-    return typename  __stripped_tuple_type<_T0, _T1, _T2, _T3, _T4, _T5, 
-      _T6, _T7, _T8, _T9>::__type(__t0, __t1, __t2, __t3, __t4, __t5, __t6, __t7, __t8, __t9
-                                   );};
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5>
+    typename __stripped_tuple_type<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4,
+                                  _Tp5>::__type
+    make_tuple(_Tp0 __t0, _Tp1 __t1, _Tp2 __t2, _Tp3 __t3, _Tp4 __t4,
+              _Tp5 __t5)
+    {
+      return typename  __stripped_tuple_type<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4,
+                                            _Tp5>::
+        __type(__t0, __t1, __t2, __t3, __t4, __t5);
+    }
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6>
+    typename __stripped_tuple_type<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5,
+                                  _Tp6>::__type
+    make_tuple(_Tp0 __t0, _Tp1 __t1, _Tp2 __t2, _Tp3 __t3, _Tp4 __t4,
+              _Tp5 __t5, _Tp6 __t6)
+    {
+      return typename  __stripped_tuple_type<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4,
+                                            _Tp5, _Tp6>::
+        __type(__t0, __t1, __t2, __t3, __t4, __t5, __t6);
+    }
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7>
+    typename __stripped_tuple_type<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                  _Tp7>::__type
+    make_tuple(_Tp0 __t0, _Tp1 __t1, _Tp2 __t2, _Tp3 __t3, _Tp4 __t4,
+              _Tp5 __t5, _Tp6 __t6, _Tp7 __t7)
+    {
+      return typename  __stripped_tuple_type<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4,
+                                            _Tp5, _Tp6, _Tp7>::
+        __type(__t0, __t1, __t2, __t3, __t4, __t5, __t6, __t7);
+    }
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8>
+    typename __stripped_tuple_type<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                  _Tp7, _Tp8>::__type
+    make_tuple(_Tp0 __t0, _Tp1 __t1, _Tp2 __t2, _Tp3 __t3, _Tp4 __t4,
+              _Tp5 __t5, _Tp6 __t6, _Tp7 __t7, _Tp8 __t8)
+    {
+      return typename  __stripped_tuple_type<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4,
+                                            _Tp5, _Tp6, _Tp7, _Tp8>::
+        __type(__t0, __t1, __t2, __t3, __t4, __t5, __t6, __t7, __t8);
+    }
+
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9>
+    typename __stripped_tuple_type<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
+                                  _Tp7, _Tp8, _Tp9>::__type
+    make_tuple(_Tp0 __t0, _Tp1 __t1, _Tp2 __t2, _Tp3 __t3, _Tp4 __t4,
+              _Tp5 __t5, _Tp6 __t6, _Tp7 __t7, _Tp8 __t8, _Tp9 __t9)
+    {
+      return typename  __stripped_tuple_type<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4,
+                                            _Tp5, _Tp6, _Tp7, _Tp8, _Tp9>::
+        __type(__t0, __t1, __t2, __t3, __t4, __t5, __t6, __t7, __t8, __t9);
+    }
+
+  // A class (and instance) which can be used in 'tie' when an element
+  // of a tuple is not required
 
-  // A class (and instance) which can be used in 'tie' when a element
-  // is not required.
   struct swallow_assign
   {
     template<class T>
-      swallow_assign&
+    swallow_assign&
       operator=(const T&)
       { return *this; }
   };
@@ -1412,113 +1439,124 @@ namespace tr1
     swallow_assign ignore;
   };
 
-  //  extern swallow_assign ignore;
 
+  // Forms a tuple of references to a list of variables.
+  template< typename _Tp0>
+    tuple< _Tp0&>
+    tie( _Tp0& __t0)
+    {
+      return make_tuple( ref(__t0));
+    };
 
-  // Allows forms a tuple of references to a list of variables.
-  template<typename _T0>
-    tuple<_T0&>
-    tie(_T0& __t0)
-    { return make_tuple(ref(__t0)); };
-
-  template<typename _T0, typename _T1>
-    tuple<_T0&, _T1&>
-    tie(_T0& __t0, _T1& __t1)
-    { return make_tuple(ref(__t0), ref(__t1)); };
+  template<typename _Tp0, typename _Tp1>
+    tuple<_Tp0&, _Tp1&>
+    tie(_Tp0& __t0, _Tp1& __t1)
+    {
+      return make_tuple(ref(__t0), ref(__t1));
+    };
 
-  template<typename _T0, typename _T1, typename _T2>
-    tuple<_T0&, _T1&, _T2&>
-    tie(_T0& __t0, _T1& __t1, _T2& __t2)
-    { return make_tuple(ref(__t0), ref(__t1), ref(__t2)); };
+  template<typename _Tp0, typename _Tp1, typename _Tp2>
+    tuple<_Tp0&, _Tp1&, _Tp2&>
+    tie(_Tp0& __t0, _Tp1& __t1, _Tp2& __t2)
+    {
+      return make_tuple(ref(__t0), ref(__t1), ref(__t2));
+    };
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3>
-    tuple<_T0&, _T1&, _T2&, _T3&>
-    tie(_T0& __t0, _T1& __t1, _T2& __t2, _T3& __t3)
-    { return make_tuple(ref(__t0), ref(__t1), ref(__t2), ref(__t3)); };
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3>
+    tuple<_Tp0&, _Tp1&, _Tp2&, _Tp3&>
+    tie(_Tp0& __t0, _Tp1& __t1, _Tp2& __t2, _Tp3& __t3)
+    {
+      return make_tuple(ref(__t0), ref(__t1), ref(__t2), ref(__t3));
+    };
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4>
-    tuple<_T0&, _T1&, _T2&, _T3&, _T4&>
-    tie(_T0& __t0, _T1& __t1, _T2& __t2, _T3& __t3, _T4& __t4)
-    { 
-      return make_tuple(ref(__t0), ref(__t1), ref(__t2), ref(__t3), ref(__t4));
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4>
+    tuple<_Tp0&, _Tp1&, _Tp2&, _Tp3&, _Tp4&>
+    tie(_Tp0& __t0, _Tp1& __t1, _Tp2& __t2, _Tp3& __t3, _Tp4& __t4)
+    {
+      return make_tuple(ref(__t0), ref(__t1), ref(__t2), ref(__t3),
+                       ref(__t4));
     };
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5>
-    tuple<_T0&, _T1&, _T2&, _T3&, _T4&, _T5&>
-    tie(_T0& __t0, _T1& __t1, _T2& __t2, _T3& __t3, _T4& __t4, _T5& __t5)
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5>
+    tuple<_Tp0&, _Tp1&, _Tp2&, _Tp3&, _Tp4&, _Tp5&>
+    tie(_Tp0& __t0, _Tp1& __t1, _Tp2& __t2, _Tp3& __t3, _Tp4& __t4,
+        _Tp5& __t5)
     {
-      return make_tuple(ref(__t0), ref(__t1), ref(__t2), ref(__t3), 
-                       ref(__t4), ref(__t5));
+      return make_tuple(ref(__t0), ref(__t1), ref(__t2), ref(__t3), ref(__t4),
+                       ref(__t5));
     };
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6>
-    tuple<_T0&, _T1&, _T2&, _T3&, _T4&, _T5&, _T6&>
-    tie(_T0& __t0, _T1& __t1, _T2& __t2, _T3& __t3, _T4& __t4, 
-       _T5& __t5, _T6& __t6)
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6>
+    tuple<_Tp0&, _Tp1&, _Tp2&, _Tp3&, _Tp4&, _Tp5&, _Tp6&>
+    tie(_Tp0& __t0, _Tp1& __t1, _Tp2& __t2, _Tp3& __t3, _Tp4& __t4, _Tp5& __t5,
+        _Tp6& __t6)
     {
-      return make_tuple(ref(__t0), ref(__t1), ref(__t2), ref(__t3), 
-                       ref(__t4), ref(__t5), ref(__t6));
+      return make_tuple(ref(__t0), ref(__t1), ref(__t2), ref(__t3), ref(__t4),
+                       ref(__t5), ref(__t6));
     };
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7>
-    tuple<_T0&, _T1&, _T2&, _T3&, _T4&, _T5&, _T6&, _T7&>
-    tie(_T0& __t0, _T1& __t1, _T2& __t2, _T3& __t3, _T4& __t4, 
-       _T5& __t5, _T6& __t6, _T7& __t7)
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7>
+    tuple<_Tp0&, _Tp1&, _Tp2&, _Tp3&, _Tp4&, _Tp5&, _Tp6&, _Tp7&>
+    tie(_Tp0& __t0, _Tp1& __t1, _Tp2& __t2, _Tp3& __t3, _Tp4& __t4, _Tp5& __t5,
+        _Tp6& __t6, _Tp7& __t7)
     {
-      return make_tuple(ref(__t0), ref(__t1), ref(__t2), ref(__t3), 
-                       ref(__t4), ref(__t5), ref(__t6), ref(__t7));
+      return make_tuple(ref(__t0), ref(__t1), ref(__t2), ref(__t3), ref(__t4),
+                       ref(__t5), ref(__t6), ref(__t7));
     };
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8>
-    tuple<_T0&, _T1&, _T2&, _T3&, _T4&, _T5&, _T6&, _T7&, _T8&>
-    tie(_T0& __t0, _T1& __t1, _T2& __t2, _T3& __t3, _T4& __t4, 
-       _T5& __t5, _T6& __t6, _T7& __t7, _T8& __t8)
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8>
+    tuple<_Tp0&, _Tp1&, _Tp2&, _Tp3&, _Tp4&, _Tp5&, _Tp6&, _Tp7&, _Tp8&>
+    tie(_Tp0& __t0, _Tp1& __t1, _Tp2& __t2, _Tp3& __t3, _Tp4& __t4, _Tp5& __t5,
+        _Tp6& __t6, _Tp7& __t7, _Tp8& __t8)
     {
-      return make_tuple(ref(__t0), ref(__t1), ref(__t2), ref(__t3), 
-                       ref(__t4), ref(__t5), ref(__t6), ref(__t7), ref(__t8));
+      return make_tuple(ref(__t0), ref(__t1), ref(__t2), ref(__t3), ref(__t4),
+                       ref(__t5), ref(__t6), ref(__t7), ref(__t8));
     };
 
-  template<typename _T0, typename _T1, typename _T2, typename _T3, 
-          typename _T4, typename _T5, typename _T6, typename _T7, 
-          typename _T8, typename _T9>
-    tuple<_T0&, _T1&, _T2&, _T3&, _T4&, _T5&, _T6&, _T7&, _T8&, _T9&>
-    tie(_T0& __t0, _T1& __t1, _T2& __t2, _T3& __t3, _T4& __t4, 
-       _T5& __t5, _T6& __t6, _T7& __t7, _T8& __t8, _T9& __t9)
+  template<typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
+          typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
+          typename _Tp8, typename _Tp9>
+    tuple<_Tp0&, _Tp1&, _Tp2&, _Tp3&, _Tp4&, _Tp5&, _Tp6&, _Tp7&, _Tp8&,
+         _Tp9&>
+    tie(_Tp0& __t0, _Tp1& __t1, _Tp2& __t2, _Tp3& __t3, _Tp4& __t4, _Tp5& __t5,
+        _Tp6& __t6, _Tp7& __t7, _Tp8& __t8, _Tp9& __t9)
     {
-      return make_tuple(ref(__t0), ref(__t1), ref(__t2), ref(__t3), 
-                       ref(__t4), ref(__t5), ref(__t6), ref(__t7), ref(__t8), 
-                       ref(__t9));
+      return make_tuple(ref(__t0), ref(__t1), ref(__t2), ref(__t3), ref(__t4),
+                       ref(__t5), ref(__t6), ref(__t7), ref(__t8),
+                       ref(__t9));
     };
 
   // Various functions which give std::pair a tuple-like interface.
-  template<class _T1, class _T2>
-    struct tuple_size<std::pair<_T1, _T2> >
+  template<class _Tp1, class _Tp2>
+    struct tuple_size<std::pair<_Tp1, _Tp2> >
     { static const int value = 2; };
 
-  template<class _T1, class _T2>
-    struct tuple_element<0, std::pair<_T1, _T2> >
-    { typedef _T1 type; };
+  template<class _Tp1, class _Tp2>
+    struct tuple_element<0, std::pair<_Tp1, _Tp2> >
+    { typedef _Tp1 type; };
 
-  template<class _T1, class _T2>
-    struct tuple_element<1, std::pair<_T1, _T2> >
-    { typedef _T2 type; };
+  template<class _Tp1, class _Tp2>
+    struct tuple_element<1, std::pair<_Tp1, _Tp2> >
+    { typedef _Tp2 type; };
 
-  template<int _I,class _T1,class _T2>
-    typename tuple_element<_I, tuple<_T1, _T2> >::type
-    get(pair<_T1, _T2>& __in)
+  template<int _I, class _Tp1, class _Tp2>
+    typename tuple_element<_I, tuple<_Tp1, _Tp2> >::type
+    get(pair<_Tp1, _Tp2>& __in)
     { return get<_I>(tie(__in.first, __in.second)); }
 
-  template<int _I,class _T1,class _T2>
-    typename tuple_element<_I, tuple<_T1, _T2> >::type
-    get(const pair<_T1, _T2>& __in)
+  template<int _I, class _Tp1, class _Tp2>
+    typename tuple_element<_I, tuple<_Tp1, _Tp2> >::type
+    get(const pair<_Tp1, _Tp2>& __in)
     { return get<_I>(tie(__in.first, __in.second)); }
+
 }
 }
 
 #endif
+