Точные значения Должен и Должен в стандарте C ++ - PullRequest
12 голосов
/ 04 июля 2011

Я просматривал стандартную версию C ++ 03.И я начинаю путаться со значениями слов Должен и Должен .

Должен в стандарте, по-видимому, указывает на обязательное требование (будет иметь), где, как должно в стандарте, указывает на необязательное требование (мог-иметь).В английском языке Если подразумевает ожидание, я неправильно понял значение?не следует ли использовать вместо него ?

Ответы [ 2 ]

9 голосов
/ 04 июля 2011

Из ISO TR 10176, Информационные технологии. Руководящие указания по подготовке стандартов языка программирования :

3.7 Вспомогательные глаголы, используемые в этом тексте

3.7.1 должен :
Указание на требования к стандарту языка программирования или процессорам.

3.7.2 следует :
Указание на рекомендацию стандарту языка программирования или процессорам.

3.7.3 мая :
Указание на дополнительную функцию стандарта языка программирования или процессоров. Когда в этом техническом отчете содержится рекомендация к стандарту языка программирования, который поддерживает определенную дополнительную функцию, в предложении, объясняющем условие, используется вспомогательный глагол «может».

Это версия 2002 года, текущая версия 2003 года, но я предполагаю, что она не сильно изменилась. (Текущая версия, кажется, доступна за 150 евро, немного круто. Я нашел ревизию 2002 года здесь: http://std.dkuug.dk/jtc1/sc22/wg20/docs/n970-tr10176-2002.pdf.)

1 голос
/ 04 июля 2011

В C ++ 11 должен используется в местах, где C ++ 03 используется должен , вероятно, потому что это звучит лучше.

Если иногда используется, когда вы хотите что-то прописать, но это не зависит от языка, как

Реализации должны обеспечивать прогресс всех разблокированных потоков. [Примечание: стандартные функции библиотеки могут автоматически блокировать ввод-вывод или блокировки. Факторы в среде выполнения, включая внешние приоритеты потоков, могут помешать реализации обеспечить определенные гарантии продвижения вперед. - конец примечания]

Язык предписывает, чтобы среда выполнения C ++ "должна" относиться к потокам справедливо, но что вы можете сделать, если системный менеджер понизил приоритет?

...