- cpp23[meta cpp]
このページはC++23に採用された言語機能の変更を解説しています。
のちのC++規格でさらに変更される場合があるため関連項目を参照してください。
C++23からは、constexpr
関数内で定数を定義するために、static constexpr
変数を使用できるようになる。
char xdigit(int n) {
static constexpr char digits[] = "0123456789abcdef"; // C++20:OK, C++23:OK
return digits[n];
}
constexpr char xdigit(int n) {
static constexpr char digits[] = "0123456789abcdef"; // C++20:NG, C++23:OK
return digits[n];
}
C++20まではconstexpr
内でstatic constexpr
変数を定義できなかったため、関数外でのstatic constexpr
変数の定義や、consteval
関数で定数を返すなどの回避策がとられていたが、C++23からはそのような回避策が必要なくなる。