// // boost_multiprecision_error_demo.cpp // // Created by Jan Bouwer on 19/6/13. #include #include #include #include template void test_boost_multiprecision() { T negMin = std::numeric_limits::min(); I test1(negMin), test2( negMin + 1 ); --test2; assert( test1 == test2 ); // This fails on my platform for T = long assert( test1 != 0 ); assert( test1 == negMin ); assert( test2 != 0 ); assert( test2 == negMin ); // This fails on my platform for T = long } int main(int argc, const char * argv[]) { test_boost_multiprecision(); // Fails on my platform test_boost_multiprecision(); // Pass test_boost_multiprecision(); // Pass test_boost_multiprecision(); // Fail on my platform // The following hold for my platform: x86_64-apple-darwin12.4.0, // using: Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn) // with: -std=c++11 -stdlib=libc++ // static_assert(std::numeric_limits::min() == std::numeric_limits::min(), "Ok"); // static_assert(std::numeric_limits::min() == std::numeric_limits::min(), "Ok"); }