Есть ли способ удвоить точность, возвращаемую умножением (чтобы избежать переполнения)?
template<class T> class MyClass {
T multiply (T a, T b) { return a * b; }
}
Что-то вроде:
long T multiply (T a, T b) { return a * b; }
Таким образом, если бы были заданы "int", "long" или "double", то из long-long будет длинный int, long long или long long.
Это общий вопрос. Я работаю над этим, используя двойное внутреннее. Но мой вопрос заключается в том, есть ли какой-либо механизм продвижения типа к его "длинному" варианту в С++?