| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
| modern_cpp [2025-05-04 14:33] – [C++23] rrichter | modern_cpp [2025-09-19 11:57] (aktuell) – [C++26] rrichter |
|---|
| [[cppref>cpp/experimental|Technische Spezifikationen]] (TS) | [[cppref>cpp/experimental|Technische Spezifikationen]] (TS) |
| und andere Vorschläge | und andere Vorschläge |
| können in den nächsten [[https://github.com/cplusplus/draft|Entwurf]] (C++26) einfließen. | können in den nächsten [[https://github.com/cplusplus/draft|Entwurf]] ([[#C++26]](( |
| | Herb Sutter: [[https://herbsutter.com/2025/06/21/trip-report-june-2025-iso-c-standards-meeting-sofia-bulgaria/| Trip report: June 2025 ISO C++ standards meeting (Sofia, Bulgaria)]] ( 2025-06-21). |
| | ))/C++29) einfließen. |
| Die folgenden Listen sind unvollständig und in ihrer Reihenfolge subjektiv. | Die folgenden Listen sind unvollständig und in ihrer Reihenfolge subjektiv. |
| |
| > --- | > --- |
| |
| * Static reflection?((Herb Sutter: [[https://herbsutter.com/2025/02/17/trip-report-february-2025-iso-c-standards-meeting-hagenberg-austria/|Trip Report: ISO C++ Standards Meeting Hagenberg]]. (2025-02-17) )) | * Static reflection |
| * Unterstrich als Platzhalter für unbenutzte Variablen: ''auto [x,_,z] = f();'' | * Unterstrich als Platzhalter für unbenutzte Variablen: ''auto [x,_,z] = f();'' |
| * ''<contracts>'' : Vor- und Nachbedingungen, Zusicherungen | * ''<contracts>'' : Vor- und Nachbedingungen, Zusicherungen |
| * ''import std;'' für Module der Standard-Bibliothek | * ''import std;'' für Module der Standard-Bibliothek |
| * [[kennen:include:ranges]]: Temporäre Werte in range-based for leben länger ([[https://wg21.link/p2644|P2644]]). | * [[kennen:include:ranges]]: Temporäre Werte in range-based for leben länger ([[https://wg21.link/p2644|P2644]]). |
| * an Python angelehnte Ausgabe mit ''format()'' ([[https://wg21.link/p2286|P2286]]): ''std::println("{}", std::set{1,2,3,1});'' -> ''{1, 2, 3}'' | |
| * ''std::ranges::to<Container>'' ([[https://wg21.link/p1206r7|P1206]]) | * ''std::ranges::to<Container>'' ([[https://wg21.link/p1206r7|P1206]]) |
| * ''std::views::enumerate''((Inbal Levi: https://www.slideshare.net/InbalLevi5/isockona2022tripreportpptx (2023-01-17).)), ''as_const'', ''as_rvalue'', ''cartesian_product'', ''chunk[_by]'', ''join_with'', ''repeat'', ''slide'', ''stride'', ''adjacent[_transform]'', ''pairwise[_transform]'', ''zip[_transform]'' | * ''std::views::enumerate''((Inbal Levi: https://www.slideshare.net/InbalLevi5/isockona2022tripreportpptx (2023-01-17).)), ''as_const'', ''as_rvalue'', ''cartesian_product'', ''chunk[_by]'', ''join_with'', ''repeat'', ''slide'', ''stride'', ''adjacent[_transform]'', ''pairwise[_transform]'', ''zip[_transform]'' |
| * Algorithmen: ''iota()'', ''shift_left()'', ''shift_right()'', ''starts_with()'', ''ends_with()'', ''contains()'', ''fold()'' | * Algorithmen: ''iota()'', ''shift_left()'', ''shift_right()'', ''starts_with()'', ''ends_with()'', ''contains()'', ''fold()'' |
| * [[kennen:include:generator|std::generator<T>]] für Coroutinen | * [[kennen:include:generator|std::generator<T>]] für Coroutinen |
| * [[kennen:include:print|std::print()]] wirkt wie ''%%std::cout << format()%%'', ''std::println()'', formatierte Ausgabe für Ranges | * [[kennen:include:print|std::print()]] wirkt wie ''%%std::cout << format()%%'', ''std::println()'', |
| | * an Python angelehnte Ausgabe ([[https://wg21.link/p2286|P2286]]): ''std::print("{}", std::vector{1,2,3,1});'' -> ''[1, 2, 3, 1]'', ''std::print("{}", std::set{1,2,3,1});'' -> ''{1, 2, 3}'' |
| * ''s.contains("C++")'' für ''string'' und ''string_view'' | * ''s.contains("C++")'' für ''string'' und ''string_view'' |
| * ''std::mdspan'': mehrdimensionale Feldindizes ''a[i,j]'' | * ''std::mdspan'': mehrdimensionale Feldindizes ''a[i,j]'' |
| * [[kennen:include:expected|std::expected<Result,Error>]] und ''std::optional<T>'' mit monadischen Operationen ''transform()'', ''and_then()'', ''or_else()'' | * [[kennen:include:expected|std::expected<Result,Error>]] und ''std::optional<T>'' mit monadischen Operationen ''transform()'', ''and_then()'', ''or_else()'' |
| * Quelltext in UTF-8 zulässig, Unicode Annex 31 für Bezeichner: ''int 💩 = 23;'' | * Quelltext in UTF-8, Unicode Annex 31 für Bezeichner: ''int 💩 = 23;'' |
| * Literalsuffix (vorzeichenloser) ''size_t'': ''for (auto i = 0zu, s = v.size(); i < s; ++i) ...'' | * Literalsuffix (vorzeichenloser) ''size_t'': ''for (auto i = 0zu, s = v.size(); i < s; ++i) ...'' |
| * cachefreundliche Container ''std::flat_[multi]map<K,V>'', ''std::flat_[multi]set<T>'' | * cachefreundliche Container ''std::flat_[multi]map<K,V>'', ''std::flat_[multi]set<T>'' |