
Michael Marcin wrote:
Hello,
I haven't looked much at the math toolkit yet but I was interested in how it handled errors so I peeked at common_error_handling.hpp
I see it explicitly qualifies each all to isfinite with (boost::math::isfinite)( value ).
I assume this is to prevent macro expansion however this means that if a UDT is passed in the user is required to add their isfinite to the boost::math namespace instead of having it be reachable through ADL.
Is this intentional? I think the following would work if it's not.
using boost::math::isfinite; isfinite BOOST_PREVENT_MACRO_SUBSTITUTION( value );
I'm not sure if UDT support for this library has been considered in its design but I'm working to provide a fixed-point math library that I hope can be used as a real type just like float and double. I would like to be able to keep as much as possible in the library's namespace.
Good points, but if we rely on ADL don't we get ambiguities between boost::math::isfinite and ::isfinite (when defined as a global function)? Thanks, John.