Стандарты языка С++
На всех страницах сайта в скобочках указано в каком стандарте появилась X возможность, например:
uniform-инициализация (C++11)
- означает что uniform-инициализация появилась в C++11.
Пара слов про стандарты
C++98
В 1990 году Бьёрн Страуструп и Маргарет Эллис написали книгу Annotated C++ Reference Manual (ARM). В то время уже существовало большое множество независимых реализаций С++ и эта книга постаралась их объединить, а позже послужила основой для первого стандарта: С++98. Стандарт уже содержал: templates, STL, strings и IO streams.
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, оператор <=>.