Inhaltsverzeichnis

Modernes C++

// This is about computer mechanics… What happens when you take your favoured programming language and send it to the shop for a 60000 mile tune-up? //
— Bjarne Stroustrup((Bjarne Stroustrup: C++0x Initialization Lists.

Google Tech Talk (2007-02-21).))

Seit 2011 wird das „klassische“ C++981) im 3-Jahres-Rhythmus weiterentwickelt (siehe Zeitleiste). Aktuelle Compiler unterstützen „modernes“ C++11, C++14, C++17 (fast) vollständig und C++20, C++23, C++26 zunehmend. Technische Spezifikationen (TS) und andere Vorschläge können in den nächsten Entwurf (C++29) einfließen. Die folgenden Listen sind unvollständig und in ihrer Reihenfolge subjektiv.

C++26

C++ crossed a Rubicon: it handed us the keys to its own machinery.
— Herb Sutter2)

C++23

“Pandemic Edition” … not slowing down.
— Herb Sutter4)

C++20

// … our biggest nine-year-cycle yet … in terms of new features added. //
— Herb Sutter6)

C++17

If you can look at a screenful of code and tell that it’s C++17, then we’ve changed the way we program C++.
— Herb Sutter((Herb Sutter:

Oulu trip report (2016-06-30). ))

  std::pair p{1, 'a'};            // pair<int,char>
  auto [n, c] = p;                // structured bindings 
  for (auto [key, value] : mymap) /* ... */;
  if (auto [it, success] = mymap.insert({key, value}); success) use(it);

C++14

// …completes C++11. //

C++11

// It feels like a new language. //
— Bjarne Stroustrup
1)
ISO International Standard ISO/IEC 14882:1998(E) – Programming Language C++. (1989-09). „Bugfix“ C++03 (2003-10).
Technical Report on C++ library extensions. N1836, (2005).
2)
Herb Sutter: C++26 is done. Trip Report ISO C++ Meeting London Croydon (2026-03-29).
3)
Herb Sutter: ISO Trip Report St Louis (2024-07-02).
4)
Herb Sutter: C++23 Pandemic Edition is complete. WG21 Winter Meeting Issaquah Trip Report. (2023-02-13)
6)
Herb Sutter: Winter ISO C++ standards meeting (Kona) (2019-02-23).
7)
Compiler und Build-Infrastruktur erfordern Änderungen. Clang, Visual C++ und GCC experimentieren mit Modulen: Beispiel mit g++ 11, C++20 Modules Status Report.
8)
Von range-v3 wurde (bisher) nur eine kleine Auswahl übernommen. Wichtige, nützliche Bausteine wie action::sort, unique, enumerate, zip oder to<std::vector> fehlen. Siehe auch: rangesnext.
9)
Siehe P2168R0. Bibliotheken: cppcoro (basiert auf Boost), rangesnext, Visual C++ bietet <experimental/generator>.
10)
„destructuring declaration“ in Kotlin, „destructuring assignment“ in Javascript, „tuple assignment“/„unpacking“ in Python
11)
> std::chrono::nanoseconds{7.2e18}. Die Mühlen des ISO-C++-Komitees mahlen langsam. To Sheldon Cooper: No sarcasm sign here.