[TR1] Patches for BCB2006

Several TR1 tests are failing due to an old workaround that took swap out of namespace std::tr1. The latest compiler is much more compatibile the the overloads for complex math, so updated that workaround too. There were a few occurrences of the problem where BCB does not allow a leading :: following the typename keyword. These seem to be the exception, rather than the rule, in the files so I simply removed the :: for all compilers, rather than insert another borland workaround. Diffs follow against 1_34_0 branch. OK to commit? [mainline, then merge to branch] -- AlisdairM

AlisdairM wrote:
Several TR1 tests are failing due to an old workaround that took swap out of namespace std::tr1.
The latest compiler is much more compatibile the the overloads for complex math, so updated that workaround too.
Good.
There were a few occurrences of the problem where BCB does not allow a leading :: following the typename keyword. These seem to be the exception, rather than the rule, in the files so I simply removed the
for all compilers, rather than insert another borland workaround.
Yep, I usually remember not to do that, but sometimes they slip in.
Diffs follow against 1_34_0 branch. OK to commit? [mainline, then merge to branch]
Almost certainly, but I don't see the diffs attached? John.

John Maddock wrote:
Almost certainly, but I don't see the diffs attached?
Aaargh! They were there before I hit Post, honest ;?) See below for a second attempt (diff good from this morning on RC_1_34_0) cvs diff -u -wb -- array.hpp complex.hpp memory.hpp regex.hpp utility.hpp (in directory E:\sourceforge\rc_1_34_0\boost\boost\tr1\) Index: array.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/tr1/array.hpp,v retrieving revision 1.3 diff -u -w -b -r1.3 array.hpp --- array.hpp 1 Dec 2005 17:39:18 -0000 1.3 +++ array.hpp 4 Jun 2006 09:04:22 -0000 @@ -22,7 +22,7 @@ using ::boost::array; -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)) +#if !BOOST_WORKAROUND(__BORLANDC__, <= 0x570 ) // [6.1.3.2] Tuple creation functions using ::boost::swap; #endif Index: complex.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/tr1/complex.hpp,v retrieving revision 1.4 diff -u -w -b -r1.4 complex.hpp --- complex.hpp 16 Nov 2005 18:33:14 -0000 1.4 +++ complex.hpp 4 Jun 2006 10:39:14 -0000 @@ -89,7 +89,7 @@ return ct; } -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)) && !BOOST_WORKAROUND(BOOST_MSVC, < 1310) +#if !BOOST_WORKAROUND(__BORLANDC__, <=0x570) && !BOOST_WORKAROUND(BOOST_MSVC, < 1310) inline complex<double> polar(const char& rho, const char& theta = 0) { return ::std::polar(static_cast<double>(rho), static_cast<double>(theta)); } inline complex<double> polar(const unsigned char& rho, const unsigned char& theta = 0) @@ -121,10 +121,10 @@ #endif template<class T, class U> -inline complex<typename ::boost::tr1_detail::promote_to_real<T, U>::type> +inline complex<typename boost::tr1_detail::promote_to_real<T, U>::type> polar(const T& rho, const U& theta) { - typedef typename ::boost::tr1_detail::promote_to_real<T, U>::type real_type; + typedef typename boost::tr1_detail::promote_to_real<T, U>::type real_type; return std::polar(static_cast<real_type>(rho), static_cast<real_type>(theta)); } #endif @@ -187,7 +187,7 @@ pow (const complex<T>& x, const U& y) { typedef typename boost::tr1_detail::promote_to_real<T, U>::type real_type; - typedef complex<typename ::boost::tr1_detail::promote_to_real<T, U>::type> result_type; + typedef complex<typename boost::tr1_detail::promote_to_real<T, U>::type> result_type; typedef typename boost::mpl::if_<boost::is_same<result_type, complex<T> >, result_type const&, result_type>::type cast1_type; real_type r = y; cast1_type x1(x); @@ -200,7 +200,7 @@ pow (const T& x, const complex<U>& y) { typedef typename boost::tr1_detail::promote_to_real<T, U>::type real_type; - typedef complex<typename ::boost::tr1_detail::promote_to_real<T, U>::type> result_type; + typedef complex<typename boost::tr1_detail::promote_to_real<T, U>::type> result_type; typedef typename boost::mpl::if_<boost::is_same<result_type, complex<U> >, result_type const&, result_type>::type cast_type; real_type r = x; std::complex<real_type> x1(r); Index: memory.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/tr1/memory.hpp,v retrieving revision 1.3 diff -u -w -b -r1.3 memory.hpp --- memory.hpp 8 Nov 2005 18:52:29 -0000 1.3 +++ memory.hpp 4 Jun 2006 10:41:34 -0000 @@ -42,7 +42,7 @@ using ::boost::bad_weak_ptr; using ::boost::shared_ptr; -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)) +#if !BOOST_WORKAROUND(__BORLANDC__, <= 0x570) using ::boost::swap; #endif using ::boost::static_pointer_cast; Index: regex.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/tr1/regex.hpp,v retrieving revision 1.3 diff -u -w -b -r1.3 regex.hpp --- regex.hpp 15 Nov 2005 19:18:28 -0000 1.3 +++ regex.hpp 4 Jun 2006 10:40:22 -0000 @@ -77,7 +77,7 @@ using ::boost::wregex; #endif -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)) +#if !BOOST_WORKAROUND(__BORLANDC__, <= 0x570) // [7.8.6] basic_regex swap using ::boost::swap; #endif Index: utility.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/tr1/utility.hpp,v retrieving revision 1.3 diff -u -w -b -r1.3 utility.hpp --- utility.hpp 1 Dec 2005 17:39:18 -0000 1.3 +++ utility.hpp 4 Jun 2006 13:31:30 -0000 @@ -61,8 +61,14 @@ 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> -- AlisdairM

AlisdairM wrote:
John Maddock wrote:
Almost certainly, but I don't see the diffs attached?
Aaargh! They were there before I hit Post, honest ;?)
See below for a second attempt (diff good from this morning on RC_1_34_0)
Yep those look innocuous enough, please apply to the branch and HEAD if you can, thanks! John.
participants (2)
-
AlisdairM
-
John Maddock