我知道我对我的问题有些含糊,但我认为基本问题是清楚的。请稍等片刻。
简单地说,我有一个static constexpr
点数组,用来找到我需要使用的某些边界。这些边界只依赖于数组,所以它们可以预先计算。然而,我们希望能够改变这些点,每次我们试图测试一些东西时,改变每个值是一件痛苦的事。
例如,假设我有以下设置:static constexpr
数组为
static constexpr double CHECK_POINTS[7] = { -1.5, -1.0, -0.5, 0.0, -0.5, 1.0, 1.5 };
然后在我调用的函数中,我有下面的代码块:
std::vector<double> bounds = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
for(int i=0; i<bounds.size(); i++)
{
bounds[i] = std::exp(CHECK_POINTS[i]);
}
显然,bounds
的值可以在编译时计算出来。有没有什么方法可以让gcc这样做呢?
编辑:我的代码块中的向量不是必需的,数组就可以了。
1条答案
按热度按时间djmepvbi1#
constexpt std::vector
does not work here,但您可以使用std::array
。std::exp
is not constexpr,因此您需要找到constexpr
替代项使用gcc https://godbolt.org/z/x5a9q9M1d可以很好地编译它
(
constexpr std::exp
是一个gcc扩展,感谢@phuclv指出)