Modernes Programmieren mit C++20
C++ 20 bringt Modules, Coroutines, Concepts und Ranges. Sie ändern die Art, mit C++ zu programmieren.
- Nicolai Josuttis
Nach zwei kleineren C++-Releases (derzeit erscheint alle drei Jahre eine neue C++-Version) handelt es sich bei C++ 20 wieder um eine große, die ähnlich wie C++11 das Programmieren mit C++ nachhaltig verändern wird. Die großen Neuerungen sind Concepts, Ranges, Modules und Coroutines.
Die erste Neuerung betrifft generische Programmierung. Man kann nun auch außerhalb von Lambdas auto
als Parameter verwenden:
void printColl(const auto& coll) {
for (const auto& elem : coll) {
std::cout << elem << '\n';
}
}
Diese Funktion ist im Prinzip ein Funktionstemplate für einen Parameter coll
von beliebigem Typ. Konzepte erlauben es nun, Anforderungen und Einschränkungen an generische Datentypen zu formulieren. Dabei handelt es sich um eine mit einem Namen versehene Spezifikation der von einem Datentyp unterstützten Eigenschaften und Operationen. Damit kann man dokumentieren und sicherstellen, dass ein Template wie oben nur bestimmte Typen unterstützt.