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

Reply via email to