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