История C++
Ранний C++
- 1979: Первая реализация C с классами
- Новые возможности: классы, члены-функции, производные классы, разделение компиляции, контроль доступа public и private, друзья, проверка типов аргументов функций, значения по умолчанию, встроенные функции, перегруженный оператор присваивания, конструкторы, деструкторы,
f()аналогичноf(void), вызов функций и возврат функций (функциональные возможности синхронизации, отсутствующие в C++) - Библиотеки: библиотека задач для одновременного выполнения (отсутствует в C++)
- 1982: Опубликовано справочное руководство по C с классами
- 1984: Реализован C84, опубликовано справочное руководство
- 1985: Cfront 1.0
- Новые возможности: виртуальные функции, перегрузка функций и операторов, ссылки,
newиdeleteоператоры, ключевое словоconst, оператор разрешения области видимости - Дополнения в библиотеках: комплексное число,
string(версия AT&T), потоковый ввод/вывод
- 1985: Книга «Язык программирования C++», 1-е издание
- 1986: Статья «что это?», описывающая оставшиеся цели проектирования, включая множественное наследование, обработку исключений и шаблоны.
- 1987: Поддержка C++ в GCC 1.15.3
- 1989: Cfront 2.0
- Новые возможности: множественное наследование, указатели на члены, защищённый доступ, безопасная по типу компоновка, абстрактные классы, статические и const-квалифицированные члены-функции, специфичные для класса
newиdelete - Дополнения в библиотеках: манипуляторы ввода/вывода
- 1990: Комментированное справочное руководство по C++
В этой книге описывается язык по проекту, включая некоторые возможности, которые ещё не были реализованы. Она служила фактическим стандартом до ISO.
- Новые возможности: пространства имён, обработка исключений, вложенные классы, шаблоны
- 1991: Cfront 3.0
- 1991: Книга «Язык программирования C++», 2-е издание
Стандартный C++
- 1990: Основан комитет по стандартизации ANSI C++
- 1991: Основан комитет по стандартизации ISO C++
- 1992: STL реализован в C++
Период C++98/03
- 1998: C++98 (ISO/IEC 14882:1998)
- Новые возможности: RTTI (
dynamic_cast,typeid), ковариативные возвращаемые типы, операторы приведения типов,mutable,bool, объявления в условиях, инстанциации шаблонов, члены-шаблоны, export - Дополнения в библиотеках: локальные настройки,
bitset,valarray,auto_ptr, шаблонизированная строка, потоки ввода/вывода, и комплексные числа. - Основано на STL: контейнеры, алгоритмы, итераторы, функциональные объекты
- 1998: Книга «Язык программирования C++», 3-е издание
- 1999: Основана организация Boost членами комитета для создания новых высококачественных библиотек-кандидатов для стандарта.
- 2003: C++03 (ISO/IEC 14882:2003)
Это было небольшое исправление, предназначенное в основном для технических поправок. Это исправление добавляет определение инициализации значением.
| Отчёты об ошибках, исправленные в C++03 (92 ядра, 125 библиотек) |
|---|
- 2006: Performance TR (ISO/IEC TR 18015:2006) (ISO Store) (2006 draft)
Этот TR обсуждал стоимость различных абстракций C++, предоставлял рекомендации по реализации, обсуждал использование C++ в встраиваемых системах и представил <hardware> интерфейс для C's ISO/IEC TR 18037:2008 <iohw.h>.
- 2007: Library extension TR1 (ISO/IEC TR 19768:2007) (ISO store) (2005 draft).
Этот TR является расширением библиотеки C++, которое добавляет следующее к стандартной библиотеке C++:
- Из Boost:
reference_wrapper, Умные указатели, Функция-член,result_of,bind,function, Свойства типов, Случайные числа, Математические специальные функции,tuple,array, Неупорядоченные контейнеры (включаяhash), и Регулярные выражения. - Из C99: математические функции из
<math.h>, которые были новыми в C99, класс символов пробелов, Среда обработки чисел с плавающей точкой,hexfloatманипулятор ввода-вывода, целочисленные типы фиксированной длины, типlong long,va_copy, семейства функцийsnprintf()иvfscanf(), и спецификаторы преобразования C99 для семейств функцийprintf()иscanf().
Все из TR1, за исключением специальных функций, были включены в C++11 с незначительными изменениями.
- 2010: Математические специальные функции (ISO/IEC 29124:2010) (ISO Store) (Черновик 2010 года)
Этот международный стандарт является расширением стандартной библиотеки C++, добавляющим специальные функции, которые были частью TR1, но не были включены в C++11: эллиптические интегралы, интеграл экспоненты, многочлены Лагера, многочлены Лежандра, многочлены Эрмита, функции Бесселя, функции Неймана, бета-функция и дзета-функция Римана. Этот стандарт был интегрирован в C++17.
Период C++11
- 2011: C++11 (ISO/IEC 14882:2011) (ISO Store) (Черновик 2012 года после публикации).
Было внесено большое количество изменений, чтобы стандартизировать существующие практики и улучшить доступные для программистов C++ абстракции.
- 2011: Десятичные типы с плавающей точкой TR (ISO/IEC TR 24733:2011) (ISO Store) (Черновик 2009 года)
Этот TR реализует типы десятичных чисел с плавающей точкой из стандарта IEEE 754-2008 для арифметики с плавающей точкой: std::decimal::decimal32, std::decimal::decimal64, и std::decimal::decimal128.
- 2012: Фонд Стандартов C++ основан
- 2013: Язык программирования C++, 4-е издание
Период C++14
- 2014: C++14 (ISO Store) (ANSI Store) (Окончательный черновик 2014 года)
Незначительное пересмотр стандарта C++
- 2015: TS библиотеки файловой системы (ISO/IEC TS 18822:2015) (ISO Store) (Черновик 2014 года)
Этот TS — экспериментальное расширение библиотеки C++, которое определяет библиотеку файловой системы, основанную на boost.filesystem V3 (с некоторыми модификациями и расширениями). Этот TS был интегрирован в C++17.
- 2015: TS расширений для параллелизма (ISO/IEC TS 19570:2015) (ISO Store) (Черновик 2015 года)
Этот TS стандартизирует параллельные и векторно-параллельные API для всех алгоритмов стандартной библиотеки, а также добавляет новые алгоритмы, такие как reduce, transform_reduce, или exclusive_scan. Этот TS был интегрирован в C++17.
- 2015: TS расширений для транзакционной памяти (ISO/IEC TS 19841:2015) (ISO Store) ([Черновик 2015 года)
Этот TS расширяет ядро языка C++ синхронизированными и атомарными блоками, а также функциями, обеспечивающими безопасность транзакций, которые реализуют семантику транзакционной памяти.
- 2015: TS расширений для фундаментальных элементов библиотеки (ISO/IEC TS 19568:2015) (ISO Store) (Черновик 2015 года)
Этот TS добавляет несколько новых компонентов в стандартную библиотеку C++: optional, any, string_view, sample, search, apply, полиморфные аллокаторы и шаблоны переменных для свойств типов. Этот TS был интегрирован в C++17.
- 2015: TS расширений для концепций (ISO/IEC TS 19217:2015) (ISO Store) (Черновик 2015 года)
Этот TS расширяет ядро языка C++ концепциями (названными требованиями к типам) и ограничениями (ограничениями на типы, разрешенные в шаблонах, функциях и объявлениях переменных), что помогает в метапрограммировании и упрощает диагностику создания экземпляров шаблонов, см. концепции. Этот TS был интегрирован в C++20 с некоторыми исключениями.
- 2016: TS расширений для конкуретности (ISO/IEC TS 19571:2016) (ISO Store) (Черновик 2015 года)
Этот TS расширяет библиотеку C++, включив в неё несколько расширений для std::future, latches и barriers, а также атомарные умные указатели.
Период C++17
- 2017: C++17 (ISO Store) (ANSI Store) (n4659 2017-03-21 final draft)
Основной пересмотр стандарта C++ после C++11
- 2017: TS расширений для диапазонов (ISO/IEC TS 21425:2017) (ISO Store) (Черновик 2017 года)
Этот TS расширяет библиотеку C++, включив в неё диапазоны, новую, более мощную абстракцию для замены пар итераторов, наряду с представлениями диапазонов, диапазонами-пределов, проекциями для преобразований на лету, новыми адаптерами итераторов и алгоритмами. Это расширение наконец позволяет сортировать вектор с помощью sort(v);
- 2017: TS расширений для сопроцедур (ISO/IEC TS 22277:2017) (ISO Store) (Черновик 2017 года)
Этот TS расширяет ядро языка C++ и стандартную библиотеку, включив в неё бесклеточные сопроцедуры (возобновляемые функции). Это добавляет ключевые слова co_await, co_yield и co_return.
- 2018: TS расширений для сетевых соединений (ISO/IEC TS 19216:2018) (ISO Store) (Черновик 2017 года)
Этот TS расширяет библиотеку C++, включив в неё сетевые соединения TCP/IP, основанные на boost.asio.
END_OF_DOCUMENT_MARKER- 2018: Расширения для модулей TS (ISO/IEC TS 21544:2018) (ISO Store) (Черновик 2018 года)
Этот TS расширяет ядро языка C++, включая модули. Это добавляет специальные идентификаторы module, import и повторно вводит ключевое слово export с новым значением.
- 2018: Расширения для параллельности версии 2 TS (ISO/IEC TS 19570:2018) (ISO Store) (Черновик 2018 года)
Этот TS расширяет библиотеку C++, включая две новые политики выполнения (unseq и vec), дополнительные параллельные алгоритмы, такие как reduction_plus или for_loop_strided, блоки задач для создания и объединения параллельных задач, типы SIMD и операции над этими типами.
Период C++20
- 2020: C++20 (ISO Store) (окончательный черновик n4860 2020-03-31)
Основное пересмотр стандарта C++ после C++17
- 2021: TS рефлексии (ISO/IEC TS 23619:2021) (ISO store) (Черновик 2020 года)
Этот TS расширяет C++ возможностями проверки сущностей программы, таких как переменные, перечисления, классы и их члены, лямбда-функции и их захваты и т. д.
Будущее развитие
- Экспериментальные технические спецификации
- 2026: C++26 последний черновик n4971 (2023-12-18)
Следующее основное пересмотр стандарта C++
См. также
| Документация по C для История C |
Внешние ссылки
| История C++: 1979-1991 | |
| Развитие языка в реальном мире: C++ 1991-2006 | |
| Процветание в переполненном и меняющемся мире: C++ 2006-2020 | |
| Основы стандарта C++ | |
| C++ в Википедии | |
| Комитет по стандартам C++ |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/language/history