|
Boost Users : |
From: Andrej van der Zee (mavdzee_at_[hidden])
Date: 2008-07-31 21:18:05
Hi,
Building on IBM AIX 5.3 with gcc 4.2.4 gives me the compile-time error below in math repeating itself endlessly. No such problems for boost_1.35.
...failed gcc.compile.c++ bin.v2/libs/math/build/gcc-4.2.4/release/threading-multi/cbrt.o...
gcc.compile.c++ bin.v2/libs/math/build/gcc-4.2.4/release/threading-multi/copysign.o
In file included from libs/math/build/../src/tr1/copysign.cpp:7:
./boost/math/tr1.hpp:438: error: 'boost::math::tr1::expm1' declared as an 'inline' variable
./boost/math/tr1.hpp:438: error: 'long double boost::math::tr1::expm1' redeclared as different kind of symbol
./boost/math/tr1.hpp:436: error: previous declaration of 'double boost::math::tr1::expm1(double)'
./boost/math/tr1.hpp:438: error: expected primary-expression before 'double'
./boost/math/tr1.hpp:438: error: expected `)' before 'double'
./boost/math/tr1.hpp:459: error: expected primary-expression before 'class'
./boost/math/tr1.hpp:460: error: 'T2' was not declared in this scope
./boost/math/tr1.hpp:460: error: '::type' has not been declared
./boost/math/tr1.hpp:467: error: expected primary-expression before 'class'
./boost/math/tr1.hpp:468: error: 'T2' was not declared in this scope
./boost/math/tr1.hpp:468: error: '::type' has not been declared
./boost/math/tr1.hpp:475: error: expected primary-expression before 'class'
./boost/math/tr1.hpp:476: error: 'T2' was not declared in this scope
./boost/math/tr1.hpp:476: error: '::type' has not been declared
./boost/math/tr1.hpp:553: error: expected primary-expression before 'class'
./boost/math/tr1.hpp:554: error: 'T2' was not declared in this scope
./boost/math/tr1.hpp:554: error: '::type' has not been declared
./boost/math/tr1.hpp:561: error: expected primary-expression before 'class'
./boost/math/tr1.hpp:562: error: 'T2' was not declared in this scope
./boost/math/tr1.hpp:562: error: '::type' has not been declared
./boost/math/tr1.hpp:611: error: expected initializer before '<' token
./boost/math/tr1.hpp:612: error: expected initializer before '<' token
It seems that the compiler sees the two following functions as the same symbols, although the name slight differs:
inline double expm1(double x)
{ return boost::math::tr1::boost_expm1(x); }
inline long double expm1l(long double x)
{ return boost::math::tr1::boost_expm1l(x); }
Renaming the second function to __expm1l makes the error disappear.
The same goes for the following functions:
inline double log1p(double x)
{ return boost::math::tr1::boost_log1p(x); }
inline long double log1pl(long double x)
{ return boost::math::tr1::boost_log1pl(x); }
And the following:
inline double nextafter(double x, double y)
{ return boost::math::tr1::boost_nextafter(x, y); }
inline long double nextafterl(long double x, long double y)
{ return boost::math::tr1::boost_nextafterl(x, y); }
Well, there is a clear pattern. After prefixing the second function with __ makes the errors go away. Could somebody enlighten me why this is?
Greets,
Andrej
__________________________________________________________
Not happy with your email address?.
Get the one you really want - millions of new email addresses available now at Yahoo! http://uk.docs.yahoo.com/ymail/new.html
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