Что такое "ANSI С++"?

У меня кто-то сказал мне, что С++ 98 был написан под ANSI, прежде чем формально стандартизован как ISO/IEC 14882: 1998.

Я знаю, что ANSI был связан с C, но, похоже, я не могу найти много доказательств того, что фраза "ANSI С++" ужасно точна.

  • Является ли "ANSI С++" хорошим описанием для С++ 98?
  • Является ли "ANSI С++" хорошим описанием для последующих версий стандарта С++?

Ответ 1

Первоначально, в '89, стандартизация С++ обрабатывалась ANSI X3J16. Начиная с 91 года присоединился ISO WG21. Вы можете прочитать BS История С++: 1979-1991. ИМО, "ANSI С++" - просто оставленное имя; язык "ISO С++", хотя ANSI косвенно участвует в стандартизации.

Ответ 2

Эта страница gotw описывает отношения ANSI и ISO, насколько это касается С++, кратко:

Официальными названиями комитетов ISO и U.S. являются:

ISO/IEC JTC1/SC22/WG21 - С++ (комитет ISO С++)

INCITS PL22.16 - С++ (комитет США С++, который часто называют "комитетом ANSI С++" - хотя более точно INCITS - это отдельная организация, не входящая в ANSI, но аккредитованная ANSI для разработки стандартов США) (ранее назывались X3J16 и J16)

Эти две группы вместе часто упоминаются в единственном числе как "комитет С++", потому что они встречаются и выполняют свою работу вместе. Встречи всегда находятся в одной комнате одновременно.

Похоже, что стандарт ИСО, разработанный этим комитетом, автоматически становится стандартом США, хотя я уверен, что люди, которые действительно работают в этих комитетах, могут лучше объяснить.

Ответ 3

Сортировка, но не совсем. Существует нет и никогда не было отдельного стандарта ANSI для С++.

Текущий стандарт, однако, фактически INCITS/ISO/IEC 14882-2003. Начиная с 2003 года INCITS стала отдельной аккредитованной ANSI организацией. Название INCITS не было новым, но ранее оно было частью ANSI. В 2003 году это было " выделено" как отдельная (но все еще аккредитованная ANSI) организация. Таким образом, текущий (2003) стандарт отображается как стандарт INCITS/ISO/IEC, и я считаю, что и предстоящий (2011) стандарт также будет.

Ответ 4

С++ 98 был разработан международным комитетом, входящим в состав Международной организации по стандартизации (ИСО). ANSI и другие национальные органы по стандартизации, являются членами этого комитета. Международный стандарт был принят ANSI в качестве национального стандарта США, а также многими другими национальными органами по стандартизации.

Более ранние версии были разработаны коммерчески в США компанией AT & T; Я не уверен, был ли ANSI вовлечен в промежуточные версии (EDIT: но ответ Эрика предполагает, что это было, кратко).

Является ли "ANSI С++" хорошим описанием для С++ 98?

Я бы назвал его "Standard С++", или "С++ 98", или просто "С++", если будет ясно, что я говорю о текущем стандарте. В техническом отношении "ANSI С++" может смутить людей, которые не понимают, что это означает то же самое, особенно людей из других стран, которые могут не знать, что такое ANSI. Я, вероятно, получаю странные взгляды, если я назвал его "Британский стандарт C++", столь же точное описание.

Является ли "ANSI С++" хорошим описанием для последующих версий стандарта С++?

Тот же ответ. Стандарты С++ разработаны ИСО и приняты ANSI и другими органами.

Ответ 5

AFAIK, когда они говорят "ANSI С++", они действительно означают "никаких расширений для компилятора".

Ответ 6

Рабочая группа ISO создает стандарт. В С++ 98 была проведена большая работа по стандартизации в Америке (потому что там, где С++ был создан и где его создатели жили), прежде чем стандартизация была взята под эгидой комитета ISO (которые были теми же людьми). Окончательный стандарт ИСО был затем принят ANSI и другими национальными органами по стандартизации.

Я всегда ссылался на Standard С++ как "Standard С++".