基于循环的多成员constexpr结构体初始化

Multiple member constexpr struct initialization based on a loop

我正在努力学习 constexpr。我最初在尝试初始化 struct 时遇到困难,但很快就得到了解答。现在我正在查看结果,似乎 struct 被初始化为 0 然后是常量。我希望 primeValue 数组用质数正确初始化。如何正确初始化 struct?请随时对代码进行任何更改。

https://godbolt.org/z/x9WsqP

您的代码有两个错误:

  1. 您的初始化不正确:在 for (auto b : PrimeData::isPrime) 中,b 是局部 bool 变量,而 b = true 只是覆盖了局部变量。要更新原始数据,您必须使用 auto& b : PrimeData::isPrime(这同样适用于 primeValue 初始化循环,尽管由于您将它们初始化为 0,所以整个事情都是不必要的)。

  2. 您忘记在最后一个循环中递增 n。将其更改为 PrimeData::primeValue[n++] = static_cast<unsigned>(p);.

https://godbolt.org/z/YGjKch