Boost logo

Boost :

From: Toon Knapen (toon.knapen_at_[hidden])
Date: 2004-06-17 02:04:47


I just applied the patch below to boost/tuple/detail/tuple_basic.hpp to
port it to IBM/VisualAge. I tried to contact Jaako Jarvi but the email
address listed in the copyright statement is not valid anymore ;-(

Index: tuple_basic.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/tuple/detail/tuple_basic.hpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- tuple_basic.hpp 28 Oct 2003 09:42:43 -0000 1.23
+++ tuple_basic.hpp 17 Jun 2004 07:01:13 -0000 1.24
@@ -43,6 +43,8 @@
 #include "boost/type_traits/cv_traits.hpp"
 #include "boost/type_traits/function_traits.hpp"
 
+#include "boost/detail/workaround.hpp" // needed for BOOST_WORKAROUND
+
 namespace boost {
 namespace tuples {
 
@@ -97,12 +99,22 @@
   template<class RET, class HT, class TT >
   inline static RET get(const cons<HT, TT>& t)
   {
+#if BOOST_WORKAROUND(__IBMCPP__,==600)
+ // vacpp 6.0 is not very consistent regarding the member template keyword
+ // Here it generates an error when the template keyword is used.
+ return get_class<N-1>::get<RET>(t.tail);
+#else
     return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
+#endif
   }
   template<class RET, class HT, class TT >
   inline static RET get(cons<HT, TT>& t)
   {
+#if BOOST_WORKAROUND(__IBMCPP__,==600)
+ return get_class<N-1>::get<RET>(t.tail);
+#else
     return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
+#endif
   }
 };
 
@@ -194,11 +206,17 @@
                   typename element<N, cons<HT, TT> >::type
>::non_const_type
 get(cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) {
- return detail::get_class<N>::BOOST_NESTED_TEMPLATE
+#if BOOST_WORKAROUND(__IBMCPP__,==600 )
+ return get_class<N>::
+#else
+ return get_class<N>::BOOST_NESTED_TEMPLATE
+#endif
          get<
            typename access_traits<
              typename element<N, cons<HT, TT> >::type
- >::non_const_type>(c);
+ >::non_const_type,
+ HT,TT
+ >(c);
 }
 
 // get function for const cons-lists, returns a const reference to
@@ -209,11 +227,17 @@
                   typename element<N, cons<HT, TT> >::type
>::const_type
 get(const cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) {
+#if BOOST_WORKAROUND(__IBMCPP__,==600)
+ return detail::get_class<N>::
+#else
   return detail::get_class<N>::BOOST_NESTED_TEMPLATE
+#endif
          get<
            typename access_traits<
              typename element<N, cons<HT, TT> >::type
- >::const_type>(c);
+ >::const_type,
+ HT,TT
+ >(c);
 }
 
 // -- the cons template --------------------------------------------------


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk