port to vacpp:

added default template arguments explicitly (Joaquin M Lopez)
  removed member template keyword (Toon Knapen)


[SVN r23109]
This commit is contained in:
Toon Knapen
2004-06-17 07:01:13 +00:00
parent 78572fca7b
commit 63c93b59b4

View File

@ -43,6 +43,8 @@
#include "boost/type_traits/cv_traits.hpp" #include "boost/type_traits/cv_traits.hpp"
#include "boost/type_traits/function_traits.hpp" #include "boost/type_traits/function_traits.hpp"
#include "boost/detail/workaround.hpp" // needed for BOOST_WORKAROUND
namespace boost { namespace boost {
namespace tuples { namespace tuples {
@ -97,12 +99,22 @@ struct get_class {
template<class RET, class HT, class TT > template<class RET, class HT, class TT >
inline static RET get(const cons<HT, TT>& t) 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); return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
#endif
} }
template<class RET, class HT, class TT > template<class RET, class HT, class TT >
inline static RET get(cons<HT, TT>& t) 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); return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
#endif
} }
}; };
@ -194,11 +206,17 @@ inline typename access_traits<
typename element<N, cons<HT, TT> >::type typename element<N, cons<HT, TT> >::type
>::non_const_type >::non_const_type
get(cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) { 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< get<
typename access_traits< typename access_traits<
typename element<N, cons<HT, TT> >::type 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 // get function for const cons-lists, returns a const reference to
@ -209,11 +227,17 @@ inline typename access_traits<
typename element<N, cons<HT, TT> >::type typename element<N, cons<HT, TT> >::type
>::const_type >::const_type
get(const cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) { 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 return detail::get_class<N>::BOOST_NESTED_TEMPLATE
#endif
get< get<
typename access_traits< typename access_traits<
typename element<N, cons<HT, TT> >::type typename element<N, cons<HT, TT> >::type
>::const_type>(c); >::const_type,
HT,TT
>(c);
} }
// -- the cons template -------------------------------------------------- // -- the cons template --------------------------------------------------