QVM: Quaternions, Vectors, Matrices
deduce_scalar
Assumptions:
A и B удовлетворяют требованиям scalar.
Returns:
Если A и B имеют один и тот же тип, impl::type возвращает этот тип. В противном случае, impl::type хорошо определяется только для следующих типов: подписанный/неподписанный char, подписанный/неподписанный короткий, подписанный/неподписанный int, подписанный/неподписанный длинный, float и ДП. Логика вычета такова:
- если один изAиBявляетсядвойным, то результатдвойным.
- Если один изAиBявляется целым типом, а другойплавает, то результатплавает;
- ЕслиAилиBявляется подписанным целым числом, а другой тип является неподписанным целым числом, подписанный тип изменяется на неподписанный, и тогда меньшее из двух целых чисел продвигается к другому.