constexpr 指定子 (C23 以降)
From cppreference.com
constexpr ストレージクラス指定子で宣言されたスカラーオブジェクトは、定数です。静的初期化規則に従って、完全に明示的に初期化される必要があります。宣言に適したリンケージを持ち、アドレスを取得するために実行時に存在しますが、実行時にいかなる方法でも変更することはできません。つまり、コンパイラは、オブジェクトの固定値に関する知識を、他の任意の定数式で使用できます。
さらに、そのような定数の初期化子として使用される定数式は、コンパイル時にチェックされます。
浮動小数点型の初期化子は、翻訳時浮動小数点環境で評価される必要があります。
constexpr で宣言できるオブジェクトの型には、いくつかの制限があります。具体的には、次の構造は constexpr にすることはできません。
目次 |
[編集] キーワード
[編集] 注記
[編集] 例
このコードを実行
#include <fenv.h> #include <stdio.h> int main(void) { constexpr float f = 23.0f; constexpr float g = 33.0f; fesetround(FE_TOWARDZERO); constexpr float h = f / g; // is not affected by fesetround() above printf("%f\n", h); }
出力
0.696969
[編集] 参考文献
- C23標準 (ISO/IEC 9899:2024)
- TBD TBD (p: TBD)
[編集] 関連項目
| C++ のドキュメント (
constexpr 型指定子) |