【发布时间】:2020-12-03 04:35:26
【问题描述】:
你可以在 consteval 中使用 constexpr 对象 但你不能在 constexpr 中使用 consteval。
为什么?
我认为 consteval 应该是某种“狭义”的 constexpr。
请帮助我理解这个设计。
constexpr int constexpr_sqr(int n) { return n*n; }
consteval int consteval_sqr(int n) { return n*n; }
constexpr int constexpr_sqr2(int n) {
// not allowed
// return consteval_sqr(n);
// not allowed
// constexpr imm = consteval_sqr(n);
// return imm;
return constexpr_sqr(n);
}
int main() {
// while can do this
constexpr auto imm = consteval_sqr(999);
}
[LIVE]
【问题讨论】:
-
因为函数参数从来都不是常量表达式
标签: c++ constexpr c++20 consteval