LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

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

эта кухня с переполнениями не может быть связана с типами, а должна быть связана с операциями.

потому, что запись вида

checked int x = func(...)

вовсе не гарантирует, что не было переполнений внутри func(…) при вычислении результата. и при присваивании тут у тебя нет никакой об этом инфы.

таким образом спецификатор checked не дает гарантий корректности x. то есть ему доверять нельзя, а раз нельзя - он не нужен.

Исходная версия alysnix, :

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

эта кухня с переполнениями не может быть связана с типами, а должна быть связана с операциями.

потому, что запись вида

checked int x = func(...)

вовсе не гарантирует, что не было переполнений внутри func(…) при вычислении результата. и при присваивании тут у тебя нет никакой об этом инфы.

таким образом спецификатор checked на дает гарантий корректности x. то есть ему доверять нельзя, а раз нельзя - он не нужен.