Обзор http://www.gotw.ca/publications/mill22.htm
Выпуск первого: «Система теневого типа»
Правда, второстепенный технический момент, и его легко исправить.
Выпуск второй: (Mis) понимание
Вот что думают многие из спецификаций исключений:
Его первая точка:
- Гарантия того, что функции будут генерировать только перечисленные исключения (возможно, ни одного).
Если это то, что думают люди, это очень хорошо, потому что это именно то, что гарантирует ES, по определению . Херб соглашается в том же документе :
(ES) Принудительно установить во время выполнения, что функции будут генерировать только перечисленные исключения (возможно, ни одного).
Его вторая точка:
- Включить оптимизацию компилятора, основываясь на знании того, что будут выброшены только перечисленные исключения (возможно, ни одного).
Это тоже абсолютно правильно.
Он объясняет, почему это второе утверждение неверно, на примере:
// Example 1(b) reprise, and two
// potential white lies:
//
int Gunc() throw(); // will throw nothing (?)
int Hunc() throw(A,B); // can only throw A or B (?)
Правильны ли комментарии? Не совсем. Gunc () может действительно бросить что-то, а Hunc () может бросить что-то кроме A или B! Компилятор просто гарантирует, что побеждать их будет бессмысленно, если они это сделают ... о, и бить вашу программу тоже бессмысленно, большую часть времени.
Поскольку Gunc () или Hunc () действительно могут выдать то, что они обещали не делать, компилятор не только не может предположить, что этого не произойдет (...)
Последнее замечание Херба о том, что "(ES) принудительно во время выполнения заставляет функции генерировать только перечисленные исключения (возможно, ни одного). " опровергать также и этот "аргумент".
Оба из 2 основных точек Херба, очевидно, абсолютно, безусловно неправильно, в соответствии с ним .
Что еще можно добавить?
Я считаю, что слова имеют фиксированное значение, которое нельзя изменить по желанию, ради "аргумента".