Added explicit type casts to work around numeric_limits implementations that use nested enums (unnamed types) rather than bool members.

[SVN r28290]
This commit is contained in:
John Maddock
2005-04-17 11:26:39 +00:00
parent 9437e043fc
commit 65f8b152b7

View File

@ -64,10 +64,10 @@ void test_integral_limits(const T &, const char * msg)
<< ", max: " << make_char_numeric_for_streaming((lim::max)()) << ", max: " << make_char_numeric_for_streaming((lim::max)())
<< std::endl; << std::endl;
BOOST_CHECK(lim::is_specialized); BOOST_CHECK(static_cast<bool>(lim::is_specialized));
BOOST_CHECK(lim::is_integer); BOOST_CHECK(static_cast<bool>(lim::is_integer));
// BOOST_CHECK(lim::is_modulo); // BOOST_CHECK(lim::is_modulo);
BOOST_CHECK((lim::min)() < (lim::max)()); BOOST_CHECK(static_cast<bool>((lim::min)() < (lim::max)()));
} }
template <class T> template <class T>
@ -89,10 +89,10 @@ void test_float_limits(const T &, const char * msg)
std::cout << "\nTesting " << msg << std::endl; std::cout << "\nTesting " << msg << std::endl;
typedef std::numeric_limits<T> lim; typedef std::numeric_limits<T> lim;
BOOST_CHECK(lim::is_specialized); BOOST_CHECK(static_cast<bool>(lim::is_specialized));
BOOST_CHECK(!lim::is_modulo); BOOST_CHECK(static_cast<bool>(!lim::is_modulo));
BOOST_CHECK(!lim::is_integer); BOOST_CHECK(static_cast<bool>(!lim::is_integer));
BOOST_CHECK(lim::is_signed); BOOST_CHECK(static_cast<bool>(lim::is_signed));
const T infinity = lim::infinity(); const T infinity = lim::infinity();
const T qnan = lim::quiet_NaN(); const T qnan = lim::quiet_NaN();
@ -115,9 +115,9 @@ void test_float_limits(const T &, const char * msg)
BOOST_CHECK(lim::epsilon() > 0); BOOST_CHECK(lim::epsilon() > 0);
if(lim::is_iec559) { if(lim::is_iec559) {
BOOST_CHECK(lim::has_infinity); BOOST_CHECK(static_cast<bool>(lim::has_infinity));
BOOST_CHECK(lim::has_quiet_NaN); BOOST_CHECK(static_cast<bool>(lim::has_quiet_NaN));
BOOST_CHECK(lim::has_signaling_NaN); BOOST_CHECK(static_cast<bool>(lim::has_signaling_NaN));
} else { } else {
std::cout << "Does not claim IEEE conformance" << std::endl; std::cout << "Does not claim IEEE conformance" << std::endl;
} }