Можем ли мы применять контент, который явно не цитируется в нормативных ссылках на стандарт C++?

В разделе стандарта C++11 ( ближайший черновик N3337) 1.2 Нормативные ссылки гласят:

Следующие ссылочные документы являются обязательными для применения этого документа. Для датированных ссылок применимо только указанное издание. Для недатированных ссылок применяется последняя редакция ссылочного документа (включая любые изменения).

но нет никаких указаний о том, как применять ссылки. Легкие случаи, когда C++11 явно ссылается на ссылку, например, в разделе 3.9.1 Фундаментальные типы это говорит:

[...] Целочисленные типы со знаком и без знака должны удовлетворять ограничениям, указанным в стандарте C, раздел 5.2.4.2.1.

Но как насчет других случаев, когда нет явной ссылки? Например, C++11 использует слово неопределенное значение, но не определяет термин. Нормативные ссылки включают в себя:

- ISO/IEC 9899:1999, Языки программирования - C

[...]

- ISO/IEC 9899:1999/Cor.3:2007(E), Языки программирования - C, Техническое исправление 3

и C99( черновик стандарта C99) имеет определение неопределенного значения в разделе 3.17.2 который говорит:

либо неопределенное значение, либо представление ловушки

Правильно ли говорить, что неопределенное значение определяется C++11 по ссылке на C99, как этот ответ, по-видимому, подходит для определения бита? Если да, как насчет представления ловушек, которое описано в разделе 6.2.6.1 пункт 5 под Представления типов в C99?

Щедрое прочтение заключалось бы в том, что до тех пор, пока ничто в C++11 не конфликтует с нормативной ссылкой, тогда оно применимо, является ли это правильной интерпретацией? Некоторые из ответов на Что такое неопределенное поведение в C++? Чем он отличается от неопределенного поведения? кажется, подразумевает щедрое чтение, хотя в некоторых ответах язык немного слабоват, поэтому трудно сказать, что именно утверждается в некоторых моментах.

1 ответ

Решение

Функция раздела " Нормативные ссылки " стандартного документа ИСО определена в Директивах ИСО / МЭК, часть 2, 2011 г. § 6.2.2:

6.2.2 Нормативные ссылки

Этот условный элемент должен давать список ссылочных документов, на которые ссылаются (см. 6.6.7.5) в документе, таким образом, чтобы сделать их незаменимыми для применения документа. Для датированных ссылок каждая из них должна указываться с указанием года публикации или, в случае запроса или окончательного варианта, тире вместе со сноской "Будет опубликовано" и полным заголовком. Год публикации или тире не указывается для недатированных ссылок. Когда недатированная ссылка относится ко всем частям документа, за номером публикации следует указание "(все части)" и общее название серии частей (т. Е. Вводные и основные элементы, см. Приложение E).

В принципе, ссылочные документы должны быть документами, опубликованными ISO и / или IEC. Документы, опубликованные другими органами, могут быть переданы в нормативном порядке при условии, что

a) указанный документ признан соответствующим комитетом ИСО и / или МЭК как имеющий широкое признание и авторитетный статус, а также общедоступный,

b) заинтересованный комитет ИСО и / или МЭК получил согласие авторов или издателей (если известно) ссылочного документа на его включение и предоставление по мере необходимости - авторы или издатели должны будут предоставить такие документы по запросу,

c) авторы или издатели (если они известны) также согласились проинформировать заинтересованный комитет ИСО и / или МЭК о своем намерении пересмотреть указанный документ и вопросы, которые будут касаться пересмотра, и

d) соответствующий комитет ИСО и / или МЭК обязуется рассмотреть ситуацию в свете любых изменений в указанном документе.

Список должен быть представлен в следующей редакции:

"Следующие документы, полностью или частично, нормативно упоминаются в этом документе и являются обязательными для его применения. Для датированных ссылок применимо только указанное издание. Для недатированных ссылок применяется самое последнее издание ссылочного документа (включая любые поправки) ".

Приведенная выше формулировка также применима к части составного документа.

Список не должен включать следующее:

  • ссылочные документы, которые не являются общедоступными;

  • ссылочные документы, которые цитируются только в информативной форме;

  • ссылочные документы, которые просто послужили библиографическим или справочным материалом при подготовке документа.

Такие ссылочные документы могут быть перечислены в библиографии (см. 6.4.2).

В частности, в нем не говорится, что содержание ссылочных документов включено в текущий документ. По сути, он служит списком всех других стандартных документов, которые каким-то образом нормативно упоминаются в других местах документа.

Так что не все, например, в C99, включено в C++11 - только те части C99, которые специально упоминаются как включенные в стандарт C++ 11.

Другие вопросы по тегам