The following works with me in visual studio with toolset v120 and v140.
#include <boost/multiprecision/cpp_int.hpp>
#include <boost/multiprecision/cpp_bin_float.hpp>
#include <iostream>
typedef boost::multiprecision::int128_t int128_t;
typedef boost::multiprecision::cpp_bin_float_quad float128_t;
void main()
{
float128_t floatVal("6.0");
int128_t iVal(floatVal.convert_to<int128_t>());
std::cout << iVal << std::endl;
}
If I change it to have a fractional component, then indeed I get an exception...maybe that's what you mean. I personally only need the above behavior (though keeping the c++ truncation semantics might make sense as a long term goal...but i digress). I
always floor/ceil because call convert_to<int128_t>().
Using boost 1.61 and gcc version 4.4.7, the above also compiles and works.
Rob