constexprで修飾された、コンパイル時にも評価できる関数(C++)。
コンパイル時評価が要求される文脈(constexpr 変数の初期化など)で呼び出された場合はコンパイル時に評価され、そうでなければ通常の関数として実行時に評価されうる。
常にコンパイル時評価させたい場合は即時関数を用いる。
constexpr関数(と即時関数)は、コンパイル時評価される際、評価される時点でコンパイラが定義を知っていなければならない。 そのため、この類の関数を前方宣言(C++)でファイル分割するなら、コンパイラから参照しやすいようヘッダーファイル(C++)に定義を含めることが多い。 したがって、利便性のために暗黙的にインライン関数である。
例
constexpr int cmax(int x, int y) {
if (x > y)
return x;
else
return y;
}