Putting a macro bracket around this might make it generally useful, perhaps something like:
#ifdef BOOST_MULTIPRECISION_NO_DOUBLE_OPS (BUILTIN_OPS would include float and long double?)
…
template <class Backend>
struct is_compatible_arithmetic_type<double, number<Backend> > : public mpl::false_ {};
say
#endif
If you find this useful, you could create a GIT Pull Request, or just email the file changed. You won’t be the only one J. Defining the macro BOOST_MULTIPRECISION_NO_DOUBLE_OPS could be a way to detect dodgy conversions that need to be changed to keep full precision.
I implemented this in my codebase, and had few ill effects. Some unexpected conversions, but I did find this disabling very useful. Wrapping it in a macro bracket and making it officially supported would be fabulous.
I think it should go in number_base.hpp at line 110 or so. If we wanted to make it robust and thorough, I think we need to consider turning off implicit constructors from disabled types, too. I believe that what we have so far only disables arithmetic.
Dani