History of C++
Содержание |
Ранний C++
- 1979: C with Classes впервые реализован
- Новые возможности: classes , member functions , derived classes , раздельная компиляция, public and private access control , friends , проверка типов аргументов функций, default arguments , inline functions , overloaded assignment operator , constructors , destructors , f ( ) эквивалентно f ( void ) , функции call и return (функции синхронизации, отсутствуют в C++)
- Библиотеки: библиотека параллельных задач (отсутствует в C++)
- 1982: Справочное руководство по C with Classes опубликовано
- 1984: C84 реализован, справочное руководство опубликовано
- 1985: Cfront 1.0
-
Новые возможности:
виртуальные функции
, перегрузка функций и
операторов
,
ссылки
,
new
и
delete
операторы,
ключевое слово
const, оператор разрешения области видимости -
Добавления в библиотеку:
комплексные числа
,
string(версия AT&T), потоки ввода-вывода
- 1985: Язык программирования C++, 1-е издание
- 1986: Документ "whatis?" с описанием оставшихся целей проектирования, включая множественное наследование, обработку исключений и шаблоны.
- 1987: Поддержка C++ в GCC 1.15.3
- 1989: Cfront 2.0
- Новые возможности: множественное наследование , указатели на члены , защищённый доступ , типобезопасная компоновка, абстрактные классы , статические и константно-квалифицированные функции-члены, специализированные для класса new и delete
- Добавления в библиотеку: манипуляторы ввода-вывода
- 1990: Аннотированное руководство по C++
Эта книга описывала язык в том виде, в каком он был спроектирован, включая некоторые функции, которые ещё не были реализованы. Она служила де-факто стандартом до появления ISO.
- Новые возможности: namespaces , exception handling , nested classes , templates
- 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)
Это была незначительная редакция, предназначенная быть немногим больше, чем техническое исправление. Данная редакция вводит определение value initialization .
- 2006: Технический отчет по производительности (ISO/IEC TR 18015:2006) ( ISO Store ) ( 2006 draft )
В данном техническом отчете рассматриваются затраты различных абстракций C++, предоставляются рекомендации по реализации, обсуждается использование C++ во встроенных системах и представлен
<hardware>
интерфейс к C's ISO/IEC TR 18037:2008
<iohw.h>
.
- 2007: Расширение библиотеки TR1 (ISO/IEC TR 19768:2007) ( Магазин ISO ) ( Черновик 2005 года ).
Этот 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 draft )
Этот международный стандарт представляет собой расширение стандартной библиотеки C++, которое добавляет специальные функции, входившие в TR1, но не включённые в C++11: elliptic integrals, exponential integral, Laguerre polynomials, Legendre polynomials, Hermite polynomials, Bessel functions, Neumann functions, beta function и Riemann zeta function. Данный стандарт был объединён с C++17 .
Период C++11
- 2011: C++11 (ISO/IEC 14882:2011) ( Магазин ISO ) ( Черновик после публикации 2012 года ).
Большое количество изменений было внесено как для стандартизации существующих практик, так и для улучшения абстракций, доступных программистам на C++
- 2011: Технический отчет по десятичной арифметике с плавающей запятой (ISO/IEC TR 24733:2011) ( ISO Store ) ( 2009 draft )
Данный TR реализует десятичные типы с плавающей запятой из стандарта IEEE 754-2008 для арифметики с плавающей запятой:
std::decimal::decimal32
,
std::decimal::decimal64
, и
std::decimal::decimal128
.
- 2012: The Standard C++ Foundation основана
- 2013: The C++ Programming Language, 4th edition
Период C++14
- 2014: C++14 ( Магазин ISO ) ( Магазин ANSI ) ( Финальный черновик 2014 )
Незначительная редакция стандарта C++
- 2015: Файловая система библиотеки TS (ISO/IEC TS 18822:2015) ( Магазин ISO ) ( Черновик 2014 года )
Этот TS представляет собой экспериментальное расширение библиотеки C++, которое определяет файловую систему на основе boost.filesystem V3 (с некоторыми модификациями и расширениями). Этот TS был включен в C++17.
- 2015: Расширения для Parallelism TS (ISO/IEC TS 19570:2015) ( ISO Store ) ( Черновик 2015 года )
Этот TS стандартизирует параллельное и векторно-параллельное API для всех алгоритмов стандартной библиотеки, а также добавляет новые алгоритмы, такие как
reduce
,
transform_reduce
, или
exclusive_scan
. Этот TS был включен в C++17.
- 2015: Расширения для Transactional Memory TS (ISO/IEC TS 19841:2015) ( ISO Store ) ([ 2015 draft )
Этот TS расширяет основной язык C++ синхронизированными и атомарными блоками, а также транзакционно-безопасными функциями, которые реализуют семантику транзакционной памяти.
- 2015: Расширения для TS по основам библиотек (ISO/IEC TS 19568:2015) ( Магазин ISO ) ( Черновик 2015 года )
Данный TS добавляет несколько новых компонентов в стандартную библиотеку C++: optional , any , string_view , sample , search , apply , полиморфные аллокаторы и шаблоны переменных для type traits. Данный TS был включен в C++17.
- 2015: Расширения для Concepts TS (ISO/IEC TS 19217:2015) ( ISO Store ) ( Черновик 2015 года )
Этот TS расширяет основной язык C++ концепциями (именованными требованиями к типам) и ограничениями (ограничениями на типы, допустимые в объявлениях шаблонов, функций и переменных), что помогает метапрограммированию и упрощает диагностику инстанцирования шаблонов, см. concepts . Этот TS был включен в C++20 с некоторыми исключениями.
- 2016: Расширения для Concurrency TS (ISO/IEC TS 19571:2016) ( ISO Store ) ( 2015 draft )
Данный TS расширяет библиотеку C++, включая несколько расширений для std::future , latches и barriers , а также атомарные умные указатели.
Период C++17
- 2017: C++17 ( Магазин ISO ) ( Магазин ANSI ) ( n4659 2017-03-21 финальный черновик )
Основная ревизия стандарта C++ после C++11
- 2017: Расширения для Ranges TS (ISO/IEC TS 21425:2017) ( Магазин ISO ) ( Черновик 2017 )
Данный TS расширяет библиотеку C++, добавляя ranges — новую, более мощную абстракцию для замены пар итераторов, вместе с range views, sentinel ranges, проекциями для преобразований на лету, новыми адаптерами итераторов и алгоритмами. Это расширение наконец позволяет отсортировать вектор с помощью sort ( v ) ;
- 2017: Расширения для Coroutines TS (ISO/IEC TS 22277:2017) ( ISO Store ) ( 2017 draft )
Данный TS расширяет основной язык C++ и стандартную библиотеку, добавляя бесстековые корутины (возобновляемые функции). Это добавляет ключевые слова co_await , co_yield и co_return .
- 2018: Расширения для Networking TS (ISO/IEC TS 19216:2018) ( Магазин ISO ) ( Черновик 2017 )
Этот TS расширяет библиотеку C++ для включения TCP/IP сетей на основе boost.asio .
- 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 draft )
Этот TS расширяет библиотеку C++, включая две новые политики выполнения ( unseq и vec ), дополнительные параллельные алгоритмы, такие как reduction_plus или for_loop_strided , блоки задач для создания и объединения параллельных задач, SIMD-типы и операции над этими типами.
Период C++20
- 2020: C++20 ( Магазин ISO ) (финальный черновик n4860 2020-03-31 )
Основная ревизия стандарта C++ после C++17
- 2021: Техническая спецификация Reflection (ISO/IEC TS 23619:2021) ( Магазин ISO ) ( Черновик 2020 года )
Этот TS расширяет C++ возможностями для инспекции программных сущностей, таких как переменные, перечисления, классы и их члены, лямбды и их захваты, и т.д.
Будущее развитие
- Экспериментальные технические спецификации
- 2026: C++ последний черновик n5008 (2025-03-15)
Следующая крупная ревизия стандарта C++
Смотрите также
|
Документация C
для
Истории C
|