constexpr هم مقدارش در طول برنامه ثابته ولی با این تفاوت که مقدارش مثل const یک عدد نیست بلکه محاسبه میشه اون هم در زمان کامپایل .تو c++20 هم یک کلمه کلیدی به نام consteval اضافه شده که تابع را مجبور می کنه که در زمان کامپایل محاسبه بشه نه در زمان اجرا.به مثال زیر توجه کنید.
#include <iostream>
consteval int factorial(int n) {
return n <= 1 ? 1 : n * factorial(n - 1);
}
int main() {
constexpr int constantExpression = factorial(5);
// constantExpression = 20; // Error: You cannot modify the consteval variable.
std::cout << "constantExpression: " << constantExpression << std::endl;
return 0;
}