AUTOSAR C++14 Rule A7-1-2
The constexpr specifier shall be used for values that can be determined at compile time
説明
ルール定義
The constexpr specifier shall be used for values that can be determined at compile time.
根拠
変数値が、変数定義前に constexpr を使用して、コンパイル時定数しか含まれない式から計算される場合は、次のようになります。
constexpr double eValSquared = 2.718*2.718;
式をコンパイル時に評価できない場合は、constexpr キーワードによって、コンパイル エラーが必ず表示されます。その後で、可能であれば、根本的な問題を修正できます。
const キーワードでは、コンパイル時評価が保証されないことに注意してください。const キーワードは、初期化後の変数値の直接修正を禁止するだけです。変数の初期化方法によっては、コンパイル時または実行時に初期化を実行できます。
Polyspace 実装
チェッカーは、変数が次のいずれかを使用して初期化され、その後、コード内で変更されていない場合に constexpr 指定子を使用しないローカル変数定義にフラグを設定します。
リテラル値などのコンパイル時定義。
コンパイル時定数のみを含む式。
コンパイル時定数をパラメーターとして使用した関数の呼び出し (関数自体が
constexprの場合または関数にパラメーターを含む return ステートメントしか含まれていない場合)。コンパイル時定数を使用したコンストラクター呼び出し (コンストラクターを含むクラスのすべてのメンバー関数自体が
constexprの場合)。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 宣言 |
| カテゴリ: Required、Automated |