Re[4]: Есть ли практический смысл в неявном усечении значений?
От: _NN_ www.nemerleweb.com
Дата: 22.10.18 07:06
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, _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);
    }
}
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.