Blog 2 Min. Lesezeit

Vorschläge für zukünftige C++-Standards

Diesen Artikel teilen
Proposals for future C++ standards

Modernes C++ bezeichnet die Weiterentwicklung der Programmiersprache C++ über ihre ursprünglichen Designprinzipien hinaus und umfasst neuere Funktionen, Idiome und Best Practices, die seit der Entstehung der Sprache hinzugekommen sind.

C++ wird von der Internationalen Organisation für Normung (ISO) standardisiert. Neue C++-Standards erscheinen in der Regel alle paar Jahre und bringen neue Funktionen und Verbesserungen für die Sprache.

Modernes C++ führt zahlreiche neue Funktionen ein, die Klarheit, Sicherheit und Performance des Codes verbessern sollen. Smart Pointer waren dabei eine besonders wertvolle Ergänzung: Gegenüber Raw Pointern ermöglichen sie eine sicherere und komfortablere Speicherverwaltung.

Smart Pointer sind heute beliebt und in C++-Projekten weit verbreitet. Ein kurzer Blick auf einige der populärsten C++-Projekte auf GitHub zeigt, dass Smart Pointer häufig die bevorzugte Methode zur Verwaltung von Zeigern sind.

Raw Pointer sind jedoch weiterhin Bestandteil der Sprache und werden von vielen Entwicklern nach wie vor eingesetzt. Warum also nicht die Verwendung von Smart Pointern fördern, indem der Compiler sie erzwingen kann? Der Vorschlag besteht darin, ein neues Attribut einzuführen, mit dem festgelegt wird, dass eine Klasse keine Raw Pointer als Feldtypen oder Methodenparametertypen verwenden darf.

Auf diese Weise könnte der Compiler verhindern, dass innerhalb der Klasse Raw Pointer verwendet werden :)

Darüber hinaus halte ich ein [[modern]]-Attribut für sinnvoll, das kennzeichnet, dass eine Klasse moderne C++-Praktiken befolgt.

Future C++ standards

Der Compiler könnte dann veraltete C++-Praktiken innerhalb dieser Klasse ablehnen.

Ein weiterer Vorschlag betrifft die Deklaration von Shared Pointern. Da Smart Pointer inzwischen weit verbreitet sind, könnte eine Kurzschreibweise für Shared Pointer sinnvoll sein. Statt Folgendes zu schreiben:

std::shared_ptr<Test> ptr_name;

könnte man einfach schreiben:

ref Test ptr_name;

Auch wenn diese Vorschläge der Sprache keine grundlegend neuen Fähigkeiten verleihen, wären Mechanismen wertvoll, mit denen der Compiler den Code vor einigen Fallstricken veralteter C++-Praktiken schützen kann.

Diesen Artikel teilen