$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Markus Schöpflin (markus.schoepflin_at_[hidden])
Date: 2002-09-20 06:35:48
Hello,
the appended patch makes the tuple library compile on more compilers. 
Especially it makes use of BOOST_NESTED_TEMPLATE for this. Could anyone 
please apply it, maybe also on the release branch?
Thanks, Markus
Index: tuple_basic.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/tuple/detail/tuple_basic.hpp,v
retrieving revision 1.15
diff -u -r1.15 tuple_basic.hpp
--- tuple_basic.hpp	9 May 2002 17:26:37 -0000	1.15
+++ tuple_basic.hpp	20 Sep 2002 11:28:15 -0000
@@ -108,12 +108,12 @@
   template<class RET, class HT, class TT >
   inline static RET get(const cons<HT, TT>& t)
   {
-    return get_class<N-1>::template get<RET>(t.tail);
+    return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
   }
   template<class RET, class HT, class TT >
   inline static RET get(cons<HT, TT>& t)
   {
-    return get_class<N-1>::template get<RET>(t.tail);
+    return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
   }
 };
 
@@ -190,7 +190,7 @@
                   typename element<N, cons<HT, TT> >::type
                 >::non_const_type
 get(cons<HT, TT>& c BOOST_TUPLE_DUMMY_PARM) { 
-  return detail::get_class<N>::template 
+  return detail::get_class<N>::BOOST_NESTED_TEMPLATE 
          get<
            typename access_traits<
              typename element<N, cons<HT, TT> >::type
@@ -205,7 +205,7 @@
                   typename element<N, cons<HT, TT> >::type
                 >::const_type
 get(const cons<HT, TT>& c BOOST_TUPLE_DUMMY_PARM) { 
-  return detail::get_class<N>::template 
+  return detail::get_class<N>::BOOST_NESTED_TEMPLATE 
          get<
            typename access_traits<
              typename element<N, cons<HT, TT> >::type
@@ -332,6 +332,7 @@
 
   typedef HT head_type;
   typedef null_type tail_type;
+  typedef cons<HT, null_type> self_type;
 
   typedef typename 
     detail::wrap_non_storeable_type<head_type>::type stored_head_type;
@@ -379,7 +380,7 @@
 
   template <int N>
   typename access_traits<
-             typename element<N, cons>::type
+             typename element<N, self_type>::type
             >::non_const_type
   get(BOOST_TUPLE_SINGLE_DUMMY_PARM) {
     return boost::tuples::get<N>(*this);
@@ -387,7 +388,7 @@
 
   template <int N>
   typename access_traits<
-             typename element<N, cons>::type
+             typename element<N, self_type>::type
            >::const_type
   get(BOOST_TUPLE_SINGLE_DUMMY_PARM) const {
     return boost::tuples::get<N>(*this);