Is there any difference between constexpr
and consteval
?
consteval int x1 = 2;
constexpr int x2 = 5;
Is it better to use constexpr than consteval?
The standard actually says:
The consteval specifier shall be applied only to the declaration of a function or function template.
So your first example should not compile.
However, you can put consteval
or constexpr
on functions:
constexpr int foo (int x) { return x; }
consteval int bar (int x) { return x; }
constexpr
when applied to a function is merely largely advisory (see Davis Herring's comment) - it says to the compiler, evaluate this function call at compile time if you can.
consteval
, on the other hand, is mandatory - it says to the compiler, generate an error if you can't evaluate this function call at compile time.
Live demo
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With