#include <boost/qvm/deduce_scalar.hpp>
namespace boost { namespace qvm { template <class A,class B> struct deduce_scalar { typedef typename impl<A,B>::type type; }; } }
A and B satisfy the scalar requirements.
If A and B are the same type, impl<A,B>::type returns that type. Otherwise, impl<A,B>::type is well defined for the following types only: signed/unsigned char, signed/unsigned short, signed/unsigned int, signed/unsigned long, float and double. The deduction logic is as follows: