Skip to content
AgileLogics
4 min read

Modern C++ Standards: C++11 Through C++23

Prerequisites: Level 2 — Intermediate

"C++" has changed enormously since its original 1998 standard — each named revision below added enough that pre- and post-revision code can look like different languages:

  • C++11 — the single biggest jump: auto, lambdas, move semantics, smart pointers, range-based for loops. Most of Level 1 and 2 of this course is "C++11 or later" style.
  • C++14/17 — smaller refinements, plus structured bindings (auto [name, age] = ...) and std::optional/std::variant in C++17.
  • C++20 — this course's baseline: concepts, ranges, coroutines, and modules (the next several lessons cover the first three).
  • C++23 — the newest standard, with further standard library additions; compiler support is still catching up as of this course.

When reading older C++ code or tutorials, the standard being targeted (-std=c++11 vs. -std=c++20) explains a lot of stylistic differences that otherwise look inconsistent.