История изменений
Исправление alysnix, (текущая версия) :
Типы могут идти со следующими префиксами: checked — компилятор вставляет код для проверки результатов арифметических операций, и если результат не может быть представлен без переполнения, выполняет вызов abort().
эта кухня с переполнениями не может быть связана с типами, а должна быть связана с операциями.
потому, что запись вида
checked int x = func(...)
вовсе не гарантирует, что не было переполнений внутри func(…) при вычислении результата. и при присваивании тут у тебя нет никакой об этом инфы.
таким образом спецификатор checked не дает гарантий корректности x. то есть ему доверять нельзя, а раз нельзя - он не нужен.
Исходная версия alysnix, :
Типы могут идти со следующими префиксами: checked — компилятор вставляет код для проверки результатов арифметических операций, и если результат не может быть представлен без переполнения, выполняет вызов abort().
эта кухня с переполнениями не может быть связана с типами, а должна быть связана с операциями.
потому, что запись вида
checked int x = func(...)
вовсе не гарантирует, что не было переполнений внутри func(…) при вычислении результата. и при присваивании тут у тебя нет никакой об этом инфы.
таким образом спецификатор checked на дает гарантий корректности x. то есть ему доверять нельзя, а раз нельзя - он не нужен.