Coole C++-Features

Hat sich da wer schon alle angeschaut? Optionals und die Filesystem API habe ich erst vor kurzem für mich entdeckt. Diese gab es vermutlich schon in Boost, aber ich finde es echt toll, dass so etwas in die C++ Standardbibliothek einfließt.

Meinst du speziell die Neuerungen aus dem 17er, z.B. https://www.heise.de/developer/artikel/C-17-Neuzugaenge-in-den-Bibliotheken-3457730.html ?

Dass boost eine Art Übungsplatz ist, hat man ja schon bei std::thread, std::shared_ptr & Co gesehen. (Jaja, schon in wenigen Jahren könnte C++ den Stand der Funktionalität erreichen, die Java 1990 hatte - polemisches Sprachen-Bashing in 3…2…1 :D).

Sowas wie das file system ist natürlich überfällig. Nur schade, dass sie (IIRC) nicht auch gleich URIs bzw. GROB die Funktionalität aus boost::asio mit dort reingebracht haben. An sowas wie

std::string base = "http://example.com/";
std::string relative = "./images/image.png";
std::string absolute = magic(base, relative); // gibt "http://example.com/images/image.png"

std::istream stream = open(absolute);

beißt man sich in C++ immernoch die Zähne aus.

Die Sache mit den Parallelen STL-Algorithmen ist natürlich interessant. (Alles geklaut!!!111 :D). Das könnte (selbst oder gerade bei einer statisch compilierten Sprache?) einige interessante Möglichkeiten bieten.

(Bei std::any rollen sich mir aber genauso die Fußnägel hoch, wie bei boost::any. Warum haben sie das nicht gleich “var” genannt, und einen JavaScript-Interpreter drübergesetzt? Jaaa, es ist praktisch. Manchmal sogar EXTREM praktisch, und erlaubt manchmal RICHTIG generische Programme. Unwartbar aber RICHTIG generisch :rolleyes: )

Oh ja, ich meinte C++17 Neuerungen. Hmm… std::any sieht irgendwie gruselig aus. Meines Erachtens macht es aber auch nicht viel Sinn zu verwenden, da ich erahne, dass integer Werte nicht durch einen any cast in ein String verwandelt werden können.

Eines der vermutlich nützlichsten C++ Features ist mit Sicherheit die Lambda-Funktion. Das finde ich, erlaubt einen netten funktionalen Stil.

Nun, die Lambdas sind ja noch 11.

Das std::any KANN schon praktisch sein (trotz der Ironie am Ende). Sozusagen der „void*-Pointer des 21. Jahrhunderts“ :smiley: Aber genau wie void-Pointer und „var“ in manchen Sprachen: Viel bei der Programmierung, speziell bei OOP, dreht sich um Typen - und genau das dann wegzuwerfen kann, wenn es unbedacht verwendet wird, häßlich werden.

Ja, sowas wie Chapter 18. Boost.Lexical_Cast 1.0 - 1.61.0 scheint’s in std immernoch nicht zu geben.