Update of /cvsroot/boost/boost/boost/tr1
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv6614
Modified Files:
Tag: RC_1_34_0
utility.hpp
Log Message:
Revised workarounds for Borland 2006
Index: utility.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/tr1/utility.hpp,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -u -d -r1.3 -r1.3.2.1
--- utility.hpp 1 Dec 2005 17:39:18 -0000 1.3
+++ utility.hpp 5 Jun 2006 19:17:33 -0000 1.3.2.1
@@ -31,19 +31,19 @@
template < int I, class T> struct tuple_element; // forward declaration
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <class T1, class T2>
+template <class T1, class T2>
struct tuple_size< ::std::pair<T1, T2> >
: public ::boost::integral_constant< ::std::size_t, 2>
{
};
-template <class T1, class T2>
+template <class T1, class T2>
struct tuple_element<0, ::std::pair<T1, T2> >
{
typedef typename std::pair<T1, T2>::first_type type;
};
-template <class T1, class T2>
+template <class T1, class T2>
struct tuple_element<1, std::pair<T1, T2> >
{
typedef typename std::pair<T1, T2>::second_type type;
@@ -61,29 +61,35 @@
struct const_tuple_get_result
{
typedef typename boost::mpl::if_c<I==0, T1, T2>::type t1;
+# if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x582))
+ // I have absolutely no idea why add_const is not working here for
Borland!
+ // It passes all other free-standing tests, some strange interaction
going on
+ typedef typename boost::add_reference< const t1 >::type type;
+# else
typedef typename boost::add_const<t1>::type t2;
typedef typename boost::add_reference<t2>::type type;
+# endif
};
-template<int I, class T1, class T2>
+template<int I, class T1, class T2>
inline typename tuple_detail::tuple_get_result<I,T1,T2>::type
get(std::pair<T1, T2>& p, const ::boost::true_type&)
{
return p.first;
}
-template<int I, class T1, class T2>
+template<int I, class T1, class T2>
inline typename tuple_detail::const_tuple_get_result<I,T1,T2>::type get(const
std::pair<T1, T2>& p, const ::boost::true_type&)
{
return p.first;
}
-template<int I, class T1, class T2>
+template<int I, class T1, class T2>
inline typename tuple_detail::tuple_get_result<I,T1,T2>::type
get(std::pair<T1, T2>& p, const ::boost::false_type&)
{
return p.second;
}
-template<int I, class T1, class T2>
+template<int I, class T1, class T2>
inline typename tuple_detail::const_tuple_get_result<I,T1,T2>::type get(const
std::pair<T1, T2>& p, const ::boost::false_type&)
{
return p.second;
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs