您可以在 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);
}
[直播]