Description
Currently MSVC STL builds Boost.Math into its static library, which cause the static library contains non-_Uglified linking symbols and causes non-conforming linking behavior. See microsoft/STL#362.
I'm trying to resolve this in Boost.Math by adding the BOOST_MATH_NAMESPACE
macro
#ifndef BOOST_MATH_NAMESPACE
#define BOOST_MATH_NAMESPACE math
#endif
and then replace every occurrence of math
which is a namespace with BOOST_MATH_NAMESPACE
.
With the changes above, MSVC STL's special_math.cpp
can define BOOST_MATH_NAMESPACE
as _Math
(or some other _Uglified identifier, e.g. __math__
) before including <boost/math/*>
and then use ::boost::BOOST_MATH_NAMESPACE::*
to get rid of non-_Uglified symbols.
But the changes need to touch 500+ files in Boost.Math and make maintenance a bit harder (every namespace math
should be spelt as BOOST_MATH_NAMESPACE
later). Not sure whether this approach is OK.