2011-01-31 2 views

ответ

11

[ED: Поскольку этот вопрос был задан, был опубликован стандарт C++. В моем ответе я изменил прошедшее время, чтобы представить время и немного разобрался с вещами, которые прояснились с момента выпуска.]

Название языка в соответствии со стандартом - C++. Чтобы отличить его от других версий Стандарта, он иногда упоминается как C++ 11, но это не его официальное название. Предыдущие выпуски часто упоминаются как C++ 03 или C++ 98, но в конвертах на StackOverflow «C++» сам по себе обычно означает текущий вариант C++, что бы это ни было.

C++ 0x был просто идентификатором-заполнителем, используемым для ссылки на предварительную версию Стандарта до его публикации, чтобы отличить его от других версий. Сегодня у нас есть новая версия, обсуждаемая коммитом; эта версия в настоящее время называется C++ 1y.

Что касается 0x части, это то, что Bjarne Stroustrup должен сказать:

Новый стандарт, скорее всего, будет называться C++ 11, но даже незначительные bureacratic задержка может сделать, что C++ 12. Лично я предпочитаю простой C++ и использовать маркер года только тогда, когда мне нужно отличить его от предыдущих версий C++, таких как ARM C++, C++ 98 и C++ 03. Пока я склоняюсь к соглашению и все еще использую C++ 0x для следующей версии. Подумайте о «x» как шестнадцатеричном.

При публикации на SO, его часто называют C++ 11. Существует некоторая путаница в отношении того, к какой версии стандарта C++ упоминается, когда используется только тег C++ без каких-либо значений (например, теги C++ 11 или C++ 03), но обычно считается, что тег C++ ссылается к текущему выпуску. На данный момент это C++ 11.

+3

Правда, но, вероятно, это будет много лет, прежде чем это будет просто «C++», и мы ссылаемся на C++, который мы знаем теперь только как C++ 03, так же, как мы явно ссылаемся на C++ 98 как таковой. – GManNickG

+0

@GMan: Довольно точно, что это произойдет, ну, как только новый стандарт будет – Puppy

+0

@James: Это probab это означало «незначительная бюрократическая задержка» BS. –

2

Последние два стандарта были названы C++98 и C++03, поэтому можно предположить, что этот номер будет "C++XX".replace("XX", YearAccepted).

+5

+1 для упоминания C++ 98 и C++ 03. -0, не говоря уже о том, что C++ 03 не была новой версией в том смысле, что C++ 0x будет, просто «исправлением ошибок». -1 для попытки использования точечного оператора в строковом литерале. – aschepler

+4

ошибка C2228: слева от '.replace' должен быть класс/struct/union – AshleysBrain

+0

@AshleysBrain, @aschepler: Извините, пал на Python на секунду. С тех пор я восстановился. :) – James

3

Утверждено! Официальная публикация займёт некоторое время, но до конца года все еще должно быть хорошо. Мы можем начать называть его C++ 11 сейчас.

http://herbsutter.com/2011/08/12/we-have-an-international-standard-c0x-is-unanimously-approved/

Edit:Herb Sutter on 2011-10-10 объявляет, что новый стандарт ISO был опубликован. ISO Press Release это сказать:

ISO/IEC 14882: 2011 определяет язык программирования и определяет требования к реализации. Также известен как C++ 11, это первая крупная редакция стандарта с 1998 года.

Смежные вопросы