小编Tar*_*ets的帖子

从另一个 constexpr 内部调用 Constexpr

我知道,这些问题很早就被问到了(例如constexpr 函数中的非 constexpr 调用),但让我们看下一个代码:

\n
consteval int factorial(int n)\n{\n    return n <= 1 ? 1 : (n * factorial(n - 1));\n}\n\nfactorial(5);\n
Run Code Online (Sandbox Code Playgroud)\n

一切都好。我们保证,该factorial(5)表达式在编译时得到解析,因为consteval. 正确的?如果是这样,我认为这应该意味着factorial(n - 1)调用 Factorial(5) 中的递归也在编译时解决。然而,我们也知道,声明中的int factorial(int n)参数int n只是一个变量,而不是constexpr。如果我们尝试做这样的事情,这会产生影响:

\n
consteval int factorial(int n)\n{\n  // 1 \n  constexpr auto res = factorial(n - 1); // error: \xe2\x80\x98n\xe2\x80\x99 is not a constant expression\n    \n  // 2\n  return n <= 1 ? 1 : (n * …
Run Code Online (Sandbox Code Playgroud)

c++ language-lawyer constexpr

13
推荐指数
1
解决办法
528
查看次数

标签 统计

c++ ×1

constexpr ×1

language-lawyer ×1