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 Stroustrup1)

Seit 2011 wird das „klassische“ C++982) 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 Sutter3)

C++23

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

C++20

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

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 Sutter11)
  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)
Bjarne Stroustrup: C++0x Initialization Lists. Google Tech Talk (2007-02-21).
2)
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).
3)
Herb Sutter: C++26 is done. Trip Report ISO C++ Meeting London Croydon (2026-03-29).
4)
Herb Sutter: ISO Trip Report St Louis (2024-07-02).
5)
Herb Sutter: C++23 Pandemic Edition is complete. WG21 Winter Meeting Issaquah Trip Report. (2023-02-13)
7)
Herb Sutter: Winter ISO C++ standards meeting (Kona) (2019-02-23).
8)
Compiler und Build-Infrastruktur erfordern Änderungen. Clang, Visual C++ und GCC experimentieren mit Modulen: Beispiel mit g++ 11, C++20 Modules Status Report.
9)
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.
10)
Siehe P2168R0. Bibliotheken: cppcoro (basiert auf Boost), rangesnext, Visual C++ bietet <experimental/generator>.
11)
Herb Sutter: Oulu trip report (2016-06-30).
12)
„destructuring declaration“ in Kotlin, „destructuring assignment“ in Javascript, „tuple assignment“/„unpacking“ in Python
13)
> std::chrono::nanoseconds{7.2e18}. Die Mühlen des ISO-C++-Komitees mahlen langsam. To Sheldon Cooper: No sarcasm sign here.