c++ - 我怎样才能在 constexpr 函数中有一个临时变量?

标签 c++ constexpr

这是我想做的简化版本。

constexpr float f(float a, float b){
    constexpr float temp = a+b;
    return temp*temp*temp;
}

在我的版本中,a+b 是更复杂的东西,所以我不想剪切和粘贴它三次。使用 3*(a+b) 也不是实际功能的有效解决方案。我试图让问题与语法相关,而不是代数。我可以通过将 a+b 移动到它自己的 constexpr 函数来让它工作,但我宁愿不要用其他无用的函数污染命名空间。

最佳答案

正如您所发现的,您不能在 constexpr 函数体内声明变量,甚至是 constexpr 变量。

通过将其作为参数传递给第二个 constexpr 函数,仍然可以分解出一个通用表达式。对于您在此处给出的示例:

constexpr float pow3(float c) {
    return c*c*c;
}

constexpr float f(float a, float b) {
    return pow3(a+b);
}

关于c++ - 我怎样才能在 constexpr 函数中有一个临时变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11917582/

相关文章:

c++ - C函数调用参数被扰乱

c++ - 当模数为特殊形式时,通过模加法进行性能优化

c++ - 为什么引用不能与编译时函数一起使用?

c++ - constexpr 函数的规则

c++ - 检查预处理器符号的值(#define)

c++ - 与可变参数模板一起使用

c++ - 奇怪的类模板特化

c++ - `if constexpr` 的 issue with non-placement new

c++ - 为什么这不是一个常量表达式?

c++ - 'Constexpr' 与 'extern const' 对比。哪个优先?