名前空間
変種
操作

constexpr 指定子 (C23 以降)

From cppreference.com
< c‎ | language

constexpr ストレージクラス指定子で宣言されたスカラーオブジェクトは、定数です。静的初期化規則に従って、完全に明示的に初期化される必要があります。宣言に適したリンケージを持ち、アドレスを取得するために実行時に存在しますが、実行時にいかなる方法でも変更することはできません。つまり、コンパイラは、オブジェクトの固定値に関する知識を、他の任意の定数式で使用できます。

さらに、そのような定数の初期化子として使用される定数式は、コンパイル時にチェックされます。

浮動小数点型の初期化子は、翻訳時浮動小数点環境で評価される必要があります。

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 型指定子)
English 日本語 中文(简体) 中文(繁體)