Поиск…


Вступление

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

замечания

Когда упоминается C ++, часто ссылается на «Стандарт». Но что это за стандарт?

C ++ имеет долгую историю. Начав в качестве небольшого проекта Bjarne Stroustrup в Bell Labs, к началу 90-х годов он стал довольно популярным. Несколько компаний создавали компиляторы C ++, чтобы пользователи могли запускать свои компиляторы C ++ на самых разных компьютерах. Но для того, чтобы облегчить это, все эти конкурирующие компиляторы должны делиться одним определением языка.

В этот момент язык C успешно был стандартизирован. Это означает, что было написано формальное описание языка. Это было представлено Американскому национальному институту стандартов (ANSI), который открыл документ для обзора и впоследствии опубликовал его в 1989 году. Спустя год Международная организация стандартов (поскольку у нее были бы разные акронимы на разных языках, они выбрали одну форму , ISO, полученный от греческого isos, что означает равный.) Принял американский стандарт в качестве международного стандарта.

Для C ++ с самого начала было ясно, что международный интерес. Была начата рабочая группа по ИСО (известна как РГ21 в рамках Субкомитета 22). Эта рабочая группа подготовила первый стандарт примерно в 1995 году. Но, как мы знаем программисты, нет ничего более опасного для запланированной доставки, чем функции последней минуты, и это случилось и с C ++. В 1995 году появилась крутая новая библиотека под названием STL, и люди, работающие в WG21, решили добавить сглаженную версию к стандартному проекту C ++. Естественно, это привело к тому, что крайние сроки были упущены, и только 3 года спустя документ стал окончательным. ISO - очень формальная организация, поэтому стандарт C ++ был окрещен не очень товарным именем ISO / IEC 14882. Поскольку стандарты могут быть обновлены, эта точная версия стала известна как 14882: 1998.

И действительно, требовалось обновить Стандарт. Стандарт - очень толстый документ, целью которого является точное описание того, как должны работать компиляторы C ++. Даже небольшая двусмысленность может стоить исправления, поэтому к 2003 году было выпущено обновление 14882: 2003. Однако это не добавило никакой функции на C ++; новые функции были запланированы для второго обновления.

Неофициально это второе обновление было известно как C ++ 0x, потому что неизвестно, будет ли это требоваться до 2008 или 2009 года. Ну, эта версия также получила небольшую задержку, поэтому стала 14882: 2011.

К счастью, WG21 решила не допускать этого снова. C ++ 11 был хорошо принят и позволил возобновить интерес к C ++. Итак, чтобы сохранить импульс, третье обновление прошло от планирования до публикации через 3 года, чтобы стать 14882: 2014.

Работа там тоже не прекращалась. Был предложен стандарт C ++ 17, и была запущена работа для C ++ 20.

Текущие рабочие проекты

Все опубликованные стандарты ИСО доступны для продажи в магазине ISO ( http://www.iso.org ). Однако рабочие проекты стандартов C ++ доступны бесплатно.

Различные версии стандарта:

C ++ 11

Стандарт C ++ 11 является основным расширением стандарта C ++. Ниже вы можете ознакомиться с обзором изменений, поскольку они были сгруппированы по часто задаваемому файлу isocpp с ссылками на более подробную документацию.

Расширения языка

Общие функции

Классы

  • = default и = удалить
  • Управление перемещением и копированием по умолчанию
  • Делегирование конструкторов
  • Инициализаторы членов класса
  • Унаследованные конструкторы
  • Элементы управления переопределением: переопределить
  • Элементы управления переопределением: окончательный
  • Явные операторы преобразования

Другие типы

  • класс enum
  • long long - более длинное целое число
  • Расширенные целые типы
  • Обобщенные союзы
  • Обобщенные POD

Шаблоны

  • Внешние шаблоны
  • Шаблонные псевдонимы
  • Шаблоны Variadic
  • Локальные типы в качестве аргументов шаблона

совпадение

Различные функции языка

  • Какова ценность __cplusplus для C ++ 11?
  • Синтаксис типа возврата суффикса
  • Предотвращение сужения
  • Прямоугольные скобки
  • static_assert утверждения времени компиляции
  • Строковые литералы
  • Атрибуты
  • центровка
  • Функции C99

Расширения библиотек

генеральный

  • unique_ptr
  • shared_ptr
  • weak_ptr
  • Сбор мусора ABI
  • кортеж
  • Типовые черты
  • функция и привязка
  • Регулярные выражения
  • Утилиты времени
  • Генерация случайных чисел
  • Ограниченные распределители

Контейнеры и алгоритмы

  • Улучшение алгоритмов
  • Улучшение контейнеров
  • unordered_ * контейнеры
  • станд :: массив
  • forward_list

совпадение

C ++ 14

Стандарт C ++ 14 часто упоминается как исправление для C ++ 11. Он содержит только ограниченный список изменений, большинство из которых являются расширениями новых функций на C ++ 11. Ниже вы можете ознакомиться с обзором изменений, поскольку они были сгруппированы по часто задаваемому файлу isocpp с ссылками на более подробную документацию.

Расширения языка

Расширения библиотек

Устаревшее / удалено

C ++ 17

Стандарт C ++ 17 является полнофункциональным и был предложен для стандартизации. В компиляторах с экспериментальной поддержкой этих функций он обычно называется C ++ 1z.

Расширения языка

Расширения библиотек

C ++ 03

В стандарте C ++ 03 в основном рассматриваются отчеты о дефектах стандарта C ++ 98. Помимо этих дефектов, он добавляет только одну новую функцию.

Расширения языка

С ++ 98

C ++ 98 - первая стандартизованная версия C ++. Поскольку он был разработан как расширение для C, добавлены многие функции, которые выделяют C ++ из C.

Расширения языка (в отношении C89 / C90)

  • Классы, Производные классы, виртуальные функции-члены, константные функции-члены
  • Перегрузка функций, перегрузка оператора
  • Комментарии по одной строке (введена в C-languague со стандартом C99)
  • Рекомендации
  • новый и удалить
  • boolean type (был введен в C-languague со стандартом C99)
  • шаблоны
  • Пространства имен
  • исключения
  • конкретные броски

Расширения библиотек

  • Библиотека стандартных шаблонов

C ++ 20

C ++ 20 - это предстоящий стандарт C ++, который в настоящее время находится в разработке, основанный на стандарте C ++ 17. Прогресс можно отслеживать на официальном сайте ISO cpp .

Следующие функции - это просто то, что было принято для следующей версии стандарта C ++, ориентированного на 2020 год.

Расширения языка

На данный момент никаких языковых расширений не принято.

Расширения библиотек

На данный момент никаких расширений библиотеки не принято.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow