Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, _NN_, Вы писали:
_NN>>Есть вариант в стиле C#, ключевые слова checked, unchecked:
ЕМ>Проверки к коду умеют добавлять и некоторые компиляторы C++. Проблема в том, что реальные усечения еще нужно выловить.
ЕМ>Ну и напомню, что самый геморрой вовсе не с проверками, а с количеством вариантов перегруженных/шаблонных функций, которые компилятор считает подходящими для конкретного набора параметров.
При чём здесь перегрузки ?
Для каждого выражения просто задаём желаемое поведение.
А в случае переполнения скажем вызывать std::integer_overflow, который можно переопределить как хотим.
К примеру C#:
using static System.Console;
public class Program
{
static int f() { unchecked { return int.MaxValue + 10; } } // делаем что хотим
public static void Main()
{
int x = checked ( f()*int.MaxValue ); // проверяем и кидаем исключение
WriteLine(x);
}
}