Spec-Zone.ru › C++

История C++

Ранний C++

  • 1979: Первая реализация C с классами
  1. Новые возможности: классы, члены-функции, производные классы, разделение компиляции, контроль доступа public и private, друзья, проверка типов аргументов функций, значения по умолчанию, встроенные функции, перегруженный оператор присваивания, конструкторы, деструкторы, f() аналогично f(void), вызов функций и возврат функций (функциональные возможности синхронизации, отсутствующие в C++)
  2. Библиотеки: библиотека задач для одновременного выполнения (отсутствует в C++)
  • 1982: Опубликовано справочное руководство по C с классами
  • 1984: Реализован C84, опубликовано справочное руководство
  • 1985: Cfront 1.0
  1. Новые возможности: виртуальные функции, перегрузка функций и операторов, ссылки, new и delete операторы, ключевое слово const, оператор разрешения области видимости
  2. Дополнения в библиотеках: комплексное число, string (версия AT&T), потоковый ввод/вывод
  • 1985: Книга «Язык программирования C++», 1-е издание
  • 1986: Статья «что это?», описывающая оставшиеся цели проектирования, включая множественное наследование, обработку исключений и шаблоны.
  • 1987: Поддержка C++ в GCC 1.15.3
  • 1989: Cfront 2.0
  1. Новые возможности: множественное наследование, указатели на члены, защищённый доступ, безопасная по типу компоновка, абстрактные классы, статические и const-квалифицированные члены-функции, специфичные для класса new и delete
  2. Дополнения в библиотеках: манипуляторы ввода/вывода
  • 1990: Комментированное справочное руководство по C++

В этой книге описывается язык по проекту, включая некоторые возможности, которые ещё не были реализованы. Она служила фактическим стандартом до ISO.

  1. Новые возможности: пространства имён, обработка исключений, вложенные классы, шаблоны
  • 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)
  1. Новые возможности: RTTI (dynamic_cast, typeid), ковариативные возвращаемые типы, операторы приведения типов, mutable, bool, объявления в условиях, инстанциации шаблонов, члены-шаблоны, export
  2. Дополнения в библиотеках: локальные настройки, bitset, valarray, auto_ptr, шаблонизированная строка, потоки ввода/вывода, и комплексные числа.
  3. Основано на STL: контейнеры, алгоритмы, итераторы, функциональные объекты
  • 1998: Книга «Язык программирования C++», 3-е издание
  • 1999: Основана организация Boost членами комитета для создания новых высококачественных библиотек-кандидатов для стандарта.
  • 2003: C++03 (ISO/IEC 14882:2003)

Это было небольшое исправление, предназначенное в основном для технических поправок. Это исправление добавляет определение инициализации значением.

Отчёты об ошибках, исправленные в C++03 (92 ядра, 125 библиотек)
END_OF_DOCUMENT_MARKER
  • CWG#1
  • CWG#20
  • CWG#21
  • CWG#22
  • CWG#24
  • CWG#25
  • CWG#30
  • CWG#32
  • CWG#33
  • CWG#35
  • CWG#38
  • CWG#40
  • CWG#41
  • CWG#43
  • CWG#48
  • CWG#49
  • CWG#51
  • CWG#52
  • CWG#53
  • CWG#56
  • CWG#59
  • CWG#64
  • CWG#65
  • CWG#67
  • CWG#68
  • CWG#69
  • CWG#73
  • CWG#74
  • CWG#75
  • CWG#76
  • CWG#80
  • CWG#83
  • CWG#84
  • CWG#85
  • CWG#89
  • CWG#90
  • CWG#93
  • CWG#94
  • CWG#98
  • CWG#100
  • CWG#101
  • CWG#103
  • CWG#105
  • CWG#108
  • CWG#116
  • CWG#120
  • CWG#121
  • CWG#123
  • CWG#126
  • CWG#127
  • CWG#128
  • CWG#131
  • CWG#134
  • CWG#135
  • CWG#137
  • CWG#142
  • CWG#145
  • CWG#147
  • CWG#148
  • CWG#149
  • CWG#151
  • CWG#152
  • CWG#153
  • CWG#159
  • CWG#161
  • CWG#163
  • CWG#164
  • CWG#166
  • CWG#171
  • CWG#173
  • CWG#176
  • CWG#178
  • CWG#179
  • CWG#181
  • CWG#183
  • CWG#185
  • CWG#187
  • CWG#188
  • CWG#190
  • CWG#193
  • CWG#194
  • CWG#202
  • CWG#206
  • CWG#210
  • CWG#213
  • CWG#217
  • CWG#227
  • CWG#235
  • CWG#241
  • CWG#249
  • CWG#250
  • CWG#304
  • LWG#1
  • LWG#3
  • LWG#5
  • LWG#7
  • LWG#8
  • LWG#9
  • LWG#11
  • LWG#13
  • LWG#14
  • LWG#15
  • LWG#16
  • LWG#17
  • LWG#18
  • LWG#19
  • LWG#20
  • LWG#21
  • LWG#22
  • LWG#24
  • LWG#25
  • LWG#26
  • LWG#27
  • LWG#28
  • LWG#29
  • LWG#30
  • LWG#31
  • LWG#32
  • LWG#33
  • LWG#34
  • LWG#35
  • LWG#36
  • LWG#37
  • LWG#38
  • LWG#39
  • LWG#40
  • LWG#41
  • LWG#42
  • LWG#46
  • LWG#47
  • LWG#48
  • LWG#50
  • LWG#51
  • LWG#52
  • LWG#53
  • LWG#54
  • LWG#55
  • LWG#56
  • LWG#57
  • LWG#59
  • LWG#60
  • LWG#61
  • LWG#62
  • LWG#63
  • LWG#64
  • LWG#66
  • LWG#68
  • LWG#69
  • LWG#70
  • LWG#71
  • LWG#74
  • LWG#75
  • LWG#78
  • LWG#79
  • LWG#80
  • LWG#83
  • LWG#86
  • LWG#90
  • LWG#106
  • LWG#108
  • LWG#110
  • LWG#112
  • LWG#114
  • LWG#115
  • LWG#119
  • LWG#122
  • LWG#124
  • LWG#125
  • LWG#126
  • LWG#127
  • LWG#129
  • LWG#132
  • LWG#133
  • LWG#134
  • LWG#137
  • LWG#139
  • LWG#141
  • LWG#142
  • LWG#144
  • LWG#146
  • LWG#147
  • LWG#148
  • LWG#150
  • LWG#151
  • LWG#152
  • LWG#154
  • LWG#155
  • LWG#156
  • LWG#158
  • LWG#159
  • LWG#160
  • LWG#161
  • LWG#164
  • LWG#168
  • LWG#169
  • LWG#170
  • LWG#172
  • LWG#173
  • LWG#174
  • LWG#175
  • LWG#176
  • LWG#181
  • LWG#189
  • LWG#193
  • LWG#195
  • LWG#199
  • LWG#208
  • LWG#209
  • LWG#210
  • LWG#211
  • LWG#212
  • LWG#217
  • LWG#220
  • LWG#222
  • LWG#223
  • LWG#224
  • LWG#227
  • 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++:

  1. Из Boost: reference_wrapper, Умные указатели, Функция-член, result_of, bind, function, Свойства типов, Случайные числа, Математические специальные функции, tuple, array, Неупорядоченные контейнеры (включая hash), и Регулярные выражения.
  2. Из 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++11

Было внесено большое количество изменений, чтобы стандартизировать существующие практики и улучшить доступные для программистов 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++14

Незначительное пересмотр стандарта 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++17

Основной пересмотр стандарта 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++20

Основное пересмотр стандарта C++ после C++17

  • 2021: TS рефлексии (ISO/IEC TS 23619:2021) (ISO store) (Черновик 2020 года)

Этот TS расширяет C++ возможностями проверки сущностей программы, таких как переменные, перечисления, классы и их члены, лямбда-функции и их захваты и т. д.

Будущее развитие

  • Экспериментальные технические спецификации
  • 2026: C++26 последний черновик n4971 (2023-12-18)

Основная статья: C++23

Следующее основное пересмотр стандарта 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API