- Das Google-Chrome-Team listet rund 40 Probleme auf, die bei der Einführung von C++20 auftreten, und fasst die Lösungen zusammen
- Ein neuer C++-Standard erscheint alle 3 Jahre, und die erste Anwendung in Chrome erfolgt erst etwa 3 Jahre nach dem Release
- C++20 bringt viele Änderungen mit sich
- Wegfall von Unterstützung, Neuordnung von Vergleichsoperatoren, geänderte Aggregationsregeln ..
- Probleme
- Googles Style Guide basiert auf C++17
- Die C++20-Unterstützung von Clang ist unvollständig und erfordert ein neues libc++
- Windows-Binärdateien werden größer
std::iterator wird nicht mehr unterstützt (seit C++17)
- Neue Keywords wie
concept und requires kommen hinzu, was zu Konflikten führen kann, wenn sie als Variablennamen verwendet wurden
- sowie viele weitere
6 Kommentare
Hm … sollte eine Sprache auf dem Niveau von C++ nicht lieber vermeiden, so viele Breaking Changes zu verursachen …? Oder ist das einfach nur meine feste Vorstellung davon …?
Genau deshalb ist C++ so eine seltsame Sprache.. Die Sprache bekommt mit jeder neuen Version immer mehr dazu – Module, Coroutines und allerlei andere Dinge – und versucht, alles selbst abzudecken. Wenn eine Funktion eingeführt wird, unterstützen die Compiler sie oft erst 4 oder 5 Jahre später. Je nach Compiler gibt es Unterschiede bei dem, was möglich ist, und auch die Syntax unterscheidet sich hier und da ein wenig. Mit jeder neuen Version verschwinden nach und nach selbst Dinge, die man gut und zuverlässig genutzt hat. Die STL wird immer größer, und mit neuen Versionen läuft sie auf älteren Rechnern irgendwann nicht mehr.. Wenn man etwas verwenden will, würde ich eher empfehlen, Go oder Python zu nehmen.
Bei den Punkten, bei denen beim Versions-Upgrade die Abwärtskompatibilität nicht gewahrt blieb, handelt es sich meist um Verbesserungen an Features mit undefiniertem Verhalten oder Mängeln.
Funktionen wie Module, Concepts und Coroutines zeigen außerdem, dass sich die Sprache wie andere Sprachen kontinuierlich weiterentwickelt.
Gerade bei Modulen ist das ein schon seit Langem bestehendes Anliegen.
Ich bin mir nicht sicher, ob die Einstellung der Unterstützung für
std::iteratorunter den von Ihnen erwähnten Fall fällt, in dem „undefiniertes Verhalten oder fehlerhafte Funktionen verbessert“ wurden.Allerdings liegt C++ im Vergleich zu anderen Sprachen vor allem in den folgenden Punkten zurück.
Ich denke, besonders schwer wiegt, dass es aufgrund der Gleichgültigkeit der Community nur sehr wenige hochwertige Artikel gibt und dass die übrigen drei Probleme wegen der geringen Zahl an Nutzern nicht gelöst werden.