Skip to the content.

Стандарты языка С++


На всех страницах сайта в скобочках указано в каком стандарте появилась X возможность, например:

uniform-инициализация (C++11) - означает что uniform-инициализация появилась в C++11.

Пара слов про стандарты


C++98

В 1990 году Бьёрн Страуструп и Маргарет Эллис написали книгу Annotated C++ Reference Manual (ARM). В то время уже существовало большое множество независимых реализаций С++ и эта книга постаралась их объединить, а позже послужила основой для первого стандарта: С++98. Стандарт уже содержал: templates, STL, strings и IO streams.

ARM

C++03

Стандарт С++03 практически никак не повлиял на сам яп, в основном он принёс некоторые исправления, большая часть которых связана с улучшениями совместимости: описания нюансов реализации компиляторов. Некоторые авторы (в том числе Страуструп) против выделения этой версии в отдельный стандарт, рассматривая С++03 как исправленную версию С++98.

TR1

В 2005 году был опубликован Technical Report 1, который стал большим шагом к С++11 и современному С++. TR1 основан на проекте boost и содержит 13 библиотек, которые стали частью следующего стандарта: библиотека регулярных выражений, случайных чисел, умные указатели, хэш-таблицы.

C++11

Начиная с C++11 началась новая эпоха - современный С++. С++11 получил нововведения из TR1, а также: move семантику, perfect forwarding, вариативные шаблоны, constexpr, стандартизованную модель памяти, которая легла в основу реализации многопоточности.

C++14

C++14 — это небольшой стандарт, который принёс: механизм блокировки чтения-записи, обобщенные лямбды и обобщенные constexpr-функции.

C++17

C++17 - средний по размерам стандарт: Parallel STL, стандартизированная файловая система. Boost оказала огромное влияние на С++17: boost файловая система, std::optional, std::variant, std::any.

C++20

Основное: ranges, coroutines, concepts, modules. Так же на одном из совещаний были вычеркнуты contracts. Из небольших нововведений: char8_t, consteval, constinit, std::span, расширение часовых поясов в chrono, оператор <=>.