Skip to content

Latest commit

 

History

History
26 lines (19 loc) · 1.13 KB

File metadata and controls

26 lines (19 loc) · 1.13 KB

constexpr関数内でのstatic constexpr変数を許可

  • cpp23[meta cpp]

概要

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

関連項目

参照