I'm writing new numeric types, and my unit tests use MPL lists of numeric types. I usually use stuff like int, unsigned, and double, but now I'm adding cpp_int and cpp_dec_float_50. Those types were OK when I was just doing type equalities and sizeof checks. Now I'm doing tests that use objects of those types and I'm getting problems.
//==== typedef boost::mpl::list
test_integer_types; typedef boost::mpl::list test_floating_types;
I'm getting warnings about integer overflow. The problem is at Line 59 of boost/test/tools/detail/print_helper.hpp. It sets an output stream's precision based on the digits given by std::numeric_limits.
That's harmless but annoying: it's because
std::numeric_limits
This time it's an error, at Line 59 of boost/test/tools/floating_point_comparison.hpp. There no (close enough) matching function for "fpt_abs" from some "boost::multiprecision::detail::expression<..." type. (It was truncated by the display. I don't know how to get a clean print-out of errors from Code::Blocks.) I'm guessing the expression template setup is screwing things up.
Yes, it's because Boost.Test can't be used with expression template enabled types. It's a known issue, and I've added a patch for this: https://svn.boost.org/trac/boost/ticket/8272, but Genediiy seems to be MIA at present :-( Do you particularly want to test with expression-template enabled types (I reaslise there are cases when you do)? If not then you could use multiprecision types that have expression templates turned off and that should fix things. HTH, John.