这是我想做的简化版本。
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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)