このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
constexpr
指定子が見つかりません
constexpr
指定子をコンパイル時の評価用の変数または関数に使用できる
説明
この欠陥は、潜在的な変数 constexpr
と関数を示します。たとえば、この欠陥は次の状況で発生します。
コンパイル時に評価可能な式を使用することによって変数を初期化するときに、
constexpr
指定子を省略した場合。欠陥チェッカーは、変数が次のいずれかを使用して初期化されてから、コード内で変更されていない場合に
constexpr
指定子を使用しないローカル変数定義にフラグを設定します。コンパイル時定数のみを含む式。
コンパイル時定数をパラメーターとして使用した関数の呼び出し (関数自体が
constexpr
の場合または関数にパラメーターを含む return ステートメントしか含まれていない場合)。コンパイル時定数を使用したコンストラクター呼び出し (コンストラクターを含むクラスのすべてのメンバー関数自体が
constexpr
の場合)。
チェッカーは、ローカルな静的変数にフラグを設定しません。
コンパイル時に評価される可能性がある 1 つの
return
ステートメントが含まれている関数から、constexpr
指定子を省略した場合 (コンパイル時定数が引数である場合)。
リスク
変数値が、変数定義前に constexpr
を使用して、コンパイル時定数しか含まれない式から計算される場合は、次のようになります。
constexpr double eValSquared = 2.718*2.718;
式をコンパイル時に評価できない場合は、constexpr
キーワードによって、コンパイル エラーが必ず表示されます。その後で、可能であれば、根本的な問題を修正できます。
const
キーワードでは、コンパイル時評価が保証されないことに注意してください。const
キーワードは、初期化後の変数値の直接修正を禁止するだけです。変数の初期化方法によっては、コンパイル時または実行時に初期化を実行できます。
修正方法
constexpr
指定子を変数または関数の定義に追加します。
パフォーマンスの改善の程度は、使用しているコンパイラ、ライブラリ実装、環境によって異なる可能性があります。
例
結果情報
グループ: パフォーマンス |
言語: C++ |
既定値: オフ |
コマンド ライン構文: MISSING_CONSTEXPR |
影響度:Medium |