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.

