This site provides an interactive way to explore changes in the C++ standard by viewing
side-by-side diffs of individual sections (identified by stable names like [array],
[class.copy], [ranges.adaptors]).
Each version transition below focuses on Tier 1 sections (major library components and language features) to provide the most educational value.
Choose a Version Transition
C++11 → C++14
858 sectionsRefinements to C++11: generic lambdas, relaxed constexpr, variable templates.
C++14 → C++17
1945 sectionsStructured bindings, if constexpr, fold expressions, std::optional, std::variant, parallel algorithms.
C++17 → C++20
2660 sectionsThe big one: concepts, ranges, coroutines, modules, three-way comparison, constexpr everything.
C++20 → C++23
2485 sectionsLatest refinements: deducing this, if consteval, multidimensional subscript, ranges improvements.
C++23 → Trunk
2505 sectionsUpcoming C++26 features: reflection, contracts, expanded constexpr, and more.
Statistics
About This Project
This site is generated from the cplusplus/draft repository using a custom conversion pipeline that:
- Converts LaTeX sources to GitHub Flavored Markdown
- Splits chapters by stable names (section identifiers)
- Generates diffs between adjacent C++ versions
- Renders interactive side-by-side views with diff2html
What are Stable Names?
Stable names are section identifiers used throughout the C++ standard to create consistent references. For example:
[array]- std::array container[class.copy]- Copy constructors and copy assignment[ranges.adaptors]- Range adaptors[concepts.callable]- Callable concepts
Tier 1 sections (0-1 dots in the name) represent major library components and language features, making them ideal for learning how C++ evolved.
Useful Links
- Current C++ Draft (eel.is) - Latest working draft
- cppreference.com - Practical C++ documentation
- cplusplus/draft - Official LaTeX sources
- WG21 Papers - C++ standardization papers