C++ Core Guidelines: Regeln für Casts und Konvertierungen

Die C++ Core Guidelines warnen in Regel ES.46 vor Konvertierungen mit Datenverlust. Der hier verwendete Quellstand vom 10. Februar 2018 trennt ausdrücklich beabsichtigte Verengung von einer geprüften Umwandlung.

Bei einem Wert von 8,75 ergibt die Umwandlung von double zu int den Wert 8. gsl::narrow_cast macht die beabsichtigte Konvertierung sichtbar, verhindert den Verlust aber nicht. gsl::narrow löst bei diesem Informationsverlust eine Ausnahme aus.

Ein benannter Cast ist keine Sicherheitsgarantie

ES.49 empfiehlt benannte Casts statt C-Casts. static_cast, const_cast, reinterpret_cast und dynamic_cast drücken unterschiedliche Operationen aus. Die explizite Schreibweise macht eine unzulässige Verwendung jedoch nicht korrekt.

Die Regeln zu typisierten Unions behandeln ebenfalls die Bedeutung sichtbarer Typinformationen. In Engine- und Werkzeugcode helfen solche Angaben bei der Prüfung von Schnittstellen. Die Guidelines sind Empfehlungen, kein Ersatz für Compilerdiagnosen und Tests.

Weitere News

Weitere News

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein