【C++20】即時関数 consteval

関数定義の頭にconstevalとつけるだけで、コンパイル時に評価される関数となる。コンパイル時に評価できないと、エラーとなる。

コンパイル時に評価されて、実行時には使わないので、実行時に呼び出すことはできない。関数実体がないので、関数アドレスを取り出すことはできない。

std::source_location::current()は、constevalで記述されている。__LINE__や__FILE__と同じ働きをする。

constexprは、コンパイル時でも実行時でもどちらで評価してもよいところが異なる。

前の記事:【C++11】メンバ関数の左辺値/右辺値修飾 次の記事:[C++17]構造化束縛 (structured binding)

コメントする