タグ付けされた質問 「consteval」

1
consteval関数が未定義の動作を許可するのはなぜですか?
C ++には定数式の非常にきちんとした特性があります。それらの評価に未定義の動作を含めることはできません(7.7.4.7): 抽象マシン([intro.execution])の規則に従ってeの評価が次のいずれかを評価しない限り、式eはコア定数式です。 ... このドキュメントの[intro]から[cpp]で指定されている未定義の動作を持つ操作[注:たとえば、符号付き整数オーバーフロー([expr.prop])、特定のポインター演算([expr.add])、ゼロによる除算、または特定のシフト演算—後記]; 値を格納しようとする13!中で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 a …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.