私は現在、セーフティ クリティカルなソフトウェア (DO-178C DAL-D) での C++ とコーディング標準の定義について考えています。MISRA C++ を見ていましたが、これも 10 年前のもので、C++11 から 17 のすべての機能がありません。
多くの場合、安全性に関して保守的であることは悪い考えではありませんが、新しい言語機能は安全性に役立つ可能性があります。
レビューでは、特定の決定を下した理由について議論する必要があります。そして、新しい言語機能によってコードがより明確になると常に主張できます…したがって、誤解に関するエラーが少なくなります。特に、コンパイラが仮定をテストおよび検証できる場合。
しかし、「物事を明確にする」以上に安全面を強調する言語機能を見つけるのは困難です。安全性に関して、最新の C++ のどの側面が実際に役立つのでしょうか?
私はこれらのアイデアをテストするための小さな演習プロジェクトを立ち上げており、現在は「コンパイラに仮定をチェックさせる」ことに完全に集中しています。たとえば、使用[[nodiscard]]
を開始したばかりで、この方法で最初の 1 時間以内に少なくとも 2 つのバグを発見しました。しかし、最新の c++ のどの側面が設計され、安全性を考慮して使用されるのでしょうか?