Concepts sind eine spannende Neuerung in C++20, die das Template-Programmieren revolutioniert. Sie ermöglichen es Entwicklern, Anforderungen an Template-Argumente auf eine klare und verständliche Weise auszudrücken, was die Lesbarkeit und Wartbarkeit des Codes verbessert. Mit Concepts wird es einfacher, Fehler zur Compile-Zeit zu erkennen, dank verbesserter Fehlermeldungen und statischer Überprüfung von Typ-Anforderungen. Durch die Verwendung von konzeptbasierten Einschränkungen bieten C++ Concepts ein leistungsstarkes Werkzeug zur Erstellung robuster und typsicherer Templates, was letztendlich zu zuverlässigerer und effizienterer Softwareentwicklung führt.
Folgende Beispielfunktion limitiert die Template-Parameter auf Typen, die sich zu einem `double` konvertieren lassen:

Das können `double`, `float` aber auch Ganzzahlen wie zB. `int` sein. Für alle ungültigen Typen hat der Compiler zumindest eine verständliche Fehlermeldung für uns parat:

Hier wird uns mitgeteilt, dass ein `const char*` nicht zu einem `double` konvertiert werden kann.
Verständlich, wenn man sich den Aufrufversuch ansieht: