----- Messaggio originale ----- > Da: Herbert Duerr <h...@apache.org> ... > > Hi, > > On 04.01.2013 06:19, Pedro Giffuni wrote: >> As title says the windows build got broken by my attempt to use boost::math > in Calc. The linux buildbots are fine so it seems some interaction between > MSVC > and boost. >> >> hdu@ kindly provided a log: >> https://issues.apache.org/ooo/attachment.cgi?id=80094&action=edit >> >> I am completely clueless and some expert help is welcome. I guess I will > never get used to this: it is sad that the code was actually working great on > UNIX but the Windows port is important so I will revert tomorrow (unless > someone > gets ahead of me). > > I think I found the reason and an explanation of what has gone wrong: > - the stl/complex.h header gets included somehow > - it defines a function abs(complex<T>) > - on windows abs() usually comes from math.h > - so stlport<=4 on windows doesn't declare stl::abs(double) and the like > => there is a problem if stl::abs(double) is needed > - the atanh(double) which depends on stl::abs() is thus considered a failure > from C++'s SFINAE (Substitution Failure is not an Error) perspective and > thus the needed template is not propagated to > > In short: adding a > #define _STLP_HAS_NATIVE_FLOAT_ABS > before the #include<boost/math/special_functions/*> lines in interpr1.cxx > and interpr3.cxx solves the problem, but it is of course too unclean, it just > proves the point. To get things going again adding the define conditionally > on > the WNT target isn't too unreasonable. > > Interestingly stlport 5.2 adds the define itself unconditionally also for > Windows. > > So in summary the problem was caused by our code base having quite an old > stlport interacting with a quite new boost library and the resulting trouble > being hidden by the SFINAE mechanism. Yay! Experiences like this or like > issue > 72248 are interesting reality checks, especially when discussing fancy > template > libraries with their enthusiasts. >
Nice find! Thank you Herbert, these type of issues are extremely difficult to hunt without the platform in question! And I guess we have another reason to kill stlport! Pedro. > Herbert >