基于循环的多成员constexpr结构体初始化
Multiple member constexpr struct initialization based on a loop
我正在努力学习 constexpr
。我最初在尝试初始化 struct
时遇到困难,但很快就得到了解答。现在我正在查看结果,似乎 struct
被初始化为 0
然后是常量。我希望 primeValue
数组用质数正确初始化。如何正确初始化 struct
?请随时对代码进行任何更改。
您的代码有两个错误:
您的初始化不正确:在 for (auto b : PrimeData::isPrime)
中,b
是局部 bool 变量,而 b = true
只是覆盖了局部变量。要更新原始数据,您必须使用 auto& b : PrimeData::isPrime
(这同样适用于 primeValue
初始化循环,尽管由于您将它们初始化为 0,所以整个事情都是不必要的)。
您忘记在最后一个循环中递增 n
。将其更改为 PrimeData::primeValue[n++] = static_cast<unsigned>(p);
.
我正在努力学习 constexpr
。我最初在尝试初始化 struct
时遇到困难,但很快就得到了解答。现在我正在查看结果,似乎 struct
被初始化为 0
然后是常量。我希望 primeValue
数组用质数正确初始化。如何正确初始化 struct
?请随时对代码进行任何更改。
您的代码有两个错误:
您的初始化不正确:在
for (auto b : PrimeData::isPrime)
中,b
是局部 bool 变量,而b = true
只是覆盖了局部变量。要更新原始数据,您必须使用auto& b : PrimeData::isPrime
(这同样适用于primeValue
初始化循环,尽管由于您将它们初始化为 0,所以整个事情都是不必要的)。您忘记在最后一个循环中递增
n
。将其更改为PrimeData::primeValue[n++] = static_cast<unsigned>(p);
.