|
Boost Users : |
Subject: [Boost-users] Using boost with PathScale v4.x under Linux
From: Roberto Fichera (kernel_at_[hidden])
Date: 2012-02-29 04:49:01
Hi there,
I've compiled the last boost v1.49 against PathScale v4.x compiler under 64bit linux distribution,
but when compiling certain library that uses the boost/numeric/interval/rounded_transc.hpp
include file, I end up on getting some error regarding asinh(), acosh() and atanh() which were
searched in the std namespace. Compiling the same library against g++ or MSVC goes pretty
straight without problems.
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_exact<T, Rounding>::asinh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:42: error: 'std::asinh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_exact<T, Rounding>::asinh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:42: error: 'std::asinh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_exact<T, Rounding>::acosh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:43: error: 'std::acosh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_exact<T, Rounding>::acosh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:43: error: 'std::acosh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_exact<T, Rounding>::atanh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:44: error: 'std::atanh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_exact<T, Rounding>::atanh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:44: error: 'std::atanh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_std<T, Rounding>::asinh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:77: error: 'std::asinh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_std<T, Rounding>::asinh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:77: error: 'std::asinh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_std<T, Rounding>::acosh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:78: error: 'std::acosh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_std<T, Rounding>::acosh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:78: error: 'std::acosh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_std<T, Rounding>::atanh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:79: error: 'std::atanh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_std<T, Rounding>::atanh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:79: error: 'std::atanh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_opp<T, Rounding>::asinh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:122: error: 'std::asinh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_opp<T, Rounding>::asinh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:122: error: 'std::asinh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_opp<T, Rounding>::atanh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:123: error: 'std::atanh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_opp<T, Rounding>::atanh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:123: error: 'std::atanh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_opp<T, Rounding>::acosh_down(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:132: error: 'std::acosh' has not been declared
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp: In member function 'T
boost::numeric::interval_lib::rounded_transc_opp<T, Rounding>::acosh_up(const T&)':
/TempData/boost_1_49_0_pathscale/boost/numeric/interval/rounded_transc.hpp:132: error: 'std::acosh' has not been declared
Thus, I had a look in the boost include file boost/numeric/interval/detail/bugs.hpp and look like
that apply the patch below fixes the compilation error:
--- numeric/interval/detail/bugs.hpp.orig 2012-02-29 10:44:06.876597264 +0100
+++ numeric/interval/detail/bugs.hpp 2012-02-29 10:18:42.831581398 +0100
@@ -25,7 +25,7 @@
#else
# define BOOST_NUMERIC_INTERVAL_using_math(a) using std::a
# if defined(BOOST_HAS_INV_HYPERBOLIC)
-# if defined(__GLIBCPP__) || defined(__GLIBCXX__)
+# if defined(__GLIBCPP__) || defined(__GLIBCXX__) || defined(__GLIBC__)
# define BOOST_NUMERIC_INTERVAL_using_ahyp(a) using ::a
# else
# define BOOST_NUMERIC_INTERVAL_using_ahyp(a) using std::a
does anyone can comment?
Thanks in advance,
Roberto Fichera.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net