consteval vs constexpr для переменных
Есть ли разница между
constexpr
и
consteval
?
consteval int x1 = 2;
constexpr int x2 = 5;
Что лучше использовать constexpr, чем consteval?
1 ответ
Стандарт фактически говорит:
Спецификатор consteval должен применяться только к объявлению функции или шаблона функции.
Итак, ваш первый пример не должен компилироваться.
Однако вы можете поставить
consteval
или же
constexpr
по функциям:
constexpr int foo (int x) { return x; }
consteval int bar (int x) { return x; }
constexpr
когда применяется к функции, является просто рекомендательным - он говорит компилятору, оцените этот вызов функции во время компиляции, если можете.
consteval
, с другой стороны, является обязательным - он говорит компилятору генерировать ошибку, если вы не можете оценить этот вызов функции во время компиляции.