Questions tagged «consteval»

1
为什么约束函数允许未定义的行为?
C ++中的常量表达式具有非常整洁的特性:它们的求值不能具有未定义的行为(7.7.4.7): 表达式e是核心常量表达式,除非按照抽象机([intro.execution])的规则对e求值,将求出以下值之一: ... 一种操作,其操作将具有本文档的[引言] [cpp]中指定的未定义的行为[注意:例如,包括有符号整数溢出([expr.prop]),某些指针算术([expr.add],除以零或某些移位操作-尾注]; 尝试将13!in 的值存储在constexpr int确实产生一个不错的编译错误: constexpr int f(int n) { int r = n--; for (; n > 1; --n) r *= n; return r; } int main() { constexpr int x = f(13); return x; } 输出: 9:19: error: constexpr variable 'x' must be initialized …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.