最終更新日時(UTC):
が更新

履歴 編集

constexpr関数内でのstatic constexpr変数を許可(C++23)

概要

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からはそのような回避策が必要なくなる。

関連項目

参照