consteval
コンパイル時に実行されなければならない関数を示すキーワード。「実行してもよい」としか言わないconstexprの欠けていた半分である。
この違いは見た目以上に大きい。constexpr関数は、何らかの理由でコンパイル時に評価できないと、黙って通常のランタイム呼び出しにフォールバックする。それがまさに望みのこともあれば、プロファイルで初めて気づく見えない性能低下のこともある。constevalなら同じ状況がコンパイルエラーになるので、頼れる保証になる。最も広まった使い道は検証で、書式文字列を引数に照らしてコンパイル時に調べ、間違っていれば弾く。std::formatの検査はまさにこの仕組みである。ほかにも、完成したバイナリに存在してはならないテーブルなどに使う。C++23では、constexprコードからこうした関数を呼ぶ際の規則が緩和された。