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

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

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

но нет рекомендаций относительно того, как применять ссылки. Простыми случаями являются случаи, когда С++ 11 явно ссылается на ссылку, например в разделе 3.9.1 Основные типы, которые он говорит:

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

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

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

[...]

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

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

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

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

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

Ответы

Ответ 1

Функция раздела Нормативные ссылки стандартного документа ISO определена в Директивах ISO/IEC, часть 2, 2011. §6.2.2:

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

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

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

a) ссылочный документ признается соответствующим комитетом ISO и/или IEC имеющих широкое признание и авторитетный статус, а также являющийся общедоступным,

b) соответствующий ISO и/или IEC комитет получил согласие авторов или издателей (где известно) ссылочного документа к его включению и его предоставляемые по мере необходимости - авторы или издатели должны будут сделать доступны такие документы по запросу,

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

d) соответствующий ISO и/или комитет IEC обязуются пересмотреть ситуацию в свете любые изменения в ссылочном документе.

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

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

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

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

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

  • ссылочные документы, которые приводятся только информативным образом;

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

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

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

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