gpt4 book ai didi

c++11 - 当分配给 const var 时,C++(11) 中 constexpr 的值在编译时是否始终保证为 "calculated"?

转载 作者:行者123 更新时间:2023-12-02 22:50:25 25 4
gpt4 key购买 nike

我编写了一个深度递归 constexpr 函数,它执行大量计算。虽然我将它的返回值分配给这样的东西:

const int test = recursiveFunction(number);

我非常确定我的函数的值不会在编译时计算,因为我的程序编译得很顺利,绝对没有错误或警告,但在执行时它崩溃了。

提示:我意识到,如果该函数没有那么深(例如,当“number”较低时),程序运行不会出现问题。

最佳答案

要测试这个:

constexpr int recursiveFunction(int); // define somewhere

constexpr int number = 42; // or any other compile-time constant
constexpr int test = recursiveFunction(number);
static_assert(test == expected, "");

您可能需要调整 Clang 编译器选项 -fconstexpr-depth=N,它将递归 constexpr 函数调用的限制设置为 N 。默认值为 512。您可能遇到的另一个限制是 -fconstexpr-steps,它没有记录的默认值。

关于c++11 - 当分配给 const var 时,C++(11) 中 constexpr 的值在编译时是否始终保证为 "calculated"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25153792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com