namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


modern_cpp

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
modern_cpp [2023-02-23 10:29] – [C++17] rrichtermodern_cpp [2024-02-19 12:26] (aktuell) – [C++23] rrichter
Zeile 49: Zeile 49:
  
   * ''import std;'' für Module der Standard-Bibliothek   * ''import std;'' für Module der Standard-Bibliothek
-  * 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]]). 
-    * ''std::ranges::to<Container>''''std::views::enumerate''((Inbal Levi: https://www.slideshare.net/InbalLevi5/isockona2022tripreportpptx (2023-01-17).)) und weitere Adapter: ''as_const'', ''as_rvalue'', ''cartesian_product'', ''chunk[_by]'', ''join_with'', ''repeat'', ''slide'', ''stride'', ''adjacent[_transform]'', ''pairwise[_transform]'', ''zip[_transform]''+    * ''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]''
     * Algorithmen: ''iota()'', ''shift_left()'', ''shift_right()'', ''starts_with()'', ''ends_with()'', ''contains()'', ''fold()''     * Algorithmen: ''iota()'', ''shift_left()'', ''shift_right()'', ''starts_with()'', ''ends_with()'', ''contains()'', ''fold()''
-  * ''std::generator<T>'' für Coroutinen +    an Python angelehnte Ausgabe mit ''format()'' ([[https://wg21.link/p2286|P2286]]) 
-  * ''std::print()'' wirkt wie ''%%std::cout << format()%%'', ''std::println()'', formatierte Ausgabe für Ranges+  * [[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
   * ''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]''
-  * ''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 zulässig, 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>''
-  * ''std::stacktrace'' hilft bei der Fehlersuche. +  * [[kennen:include:stacktrace|std::stacktrace]] hilft bei der Fehlersuche. 
  
 ===== C++20 ===== ===== C++20 =====
Zeile 70: Zeile 72:
 [[https://devblogs.microsoft.com/cppblog/standard-c20-modules-support-with-msvc-in-visual-studio-2019-version-16-8/|Visual C++]] und [[https://devblogs.microsoft.com/cppblog/standard-c20-modules-support-with-msvc-in-visual-studio-2019-version-16-8/|Visual C++]] und
 [[https://gcc.gnu.org/wiki/cxx-modules|GCC]] [[https://gcc.gnu.org/wiki/cxx-modules|GCC]]
-experimentieren mit Modulen: [[howto:modules_gcc11|Beispiel mit g++ 11]].+experimentieren mit Modulen: [[howto:modules_gcc11|Beispiel mit g++ 11]], 
 +[[https://github.com/royjacobson/modules-report|C++20 Modules Status Report]].
 )) überwinden Probleme des ''#include''-Mechanismus (Präprozessor, Makros). ''import''-Anweisungen beschleunigen das Übersetzen, übergangsweise auch ''import <iostream>;'' Die Modularisierung der Standard-Bibliothek erfolgt erst mit C++23 ([[https://wg21.link/P0581|P0581]]). )) überwinden Probleme des ''#include''-Mechanismus (Präprozessor, Makros). ''import''-Anweisungen beschleunigen das Übersetzen, übergangsweise auch ''import <iostream>;'' Die Modularisierung der Standard-Bibliothek erfolgt erst mit C++23 ([[https://wg21.link/P0581|P0581]]).
   * [[kennen:include:ranges]] modernisiert [[kennen:include:algorithm]], z.B. ''std::ranges::sort(v);'' kombinierbare Views ''filter(odd) | transform(sqr) | take(3)'' verarbeiten Wertfolgen „lazy“((Von [[https://github.com/ericniebler/range-v3|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: [[https://github.com/cor3ntin/rangesnext|rangesnext]].)).   * [[kennen:include:ranges]] modernisiert [[kennen:include:algorithm]], z.B. ''std::ranges::sort(v);'' kombinierbare Views ''filter(odd) | transform(sqr) | take(3)'' verarbeiten Wertfolgen „lazy“((Von [[https://github.com/ericniebler/range-v3|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: [[https://github.com/cor3ntin/rangesnext|rangesnext]].)).
modern_cpp.1677144553.txt.gz · Zuletzt geändert: 2023-02-23 10:29 von rrichter

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki