C++ 为什么std::normal_分布中存在未初始化值

C++ 为什么std::normal_分布中存在未初始化值,c++,stl,C++,Stl,虽然这个例子在编译后很好,但我在下面类似的代码中得到了一个关于未初始化值的警告 #include <random> void foo(double); int main() { std::default_random_engine generator; std::normal_distribution<double> norm_dist(0,1); for(int i=0; i<3; i++) foo(norm_dist(generator));

虽然这个例子在编译后很好,但我在下面类似的代码中得到了一个关于未初始化值的警告

#include <random>
void foo(double);
int main()
{
  std::default_random_engine generator;
  std::normal_distribution<double> norm_dist(0,1);
  for(int i=0; i<3; i++)
    foo(norm_dist(generator));
  return 0;
}
#包括
无效foo(双倍);
int main()
{
std::默认随机引擎生成器;
标准:正态分布范数分布(0,1);

对于(int i=0;iYou可能想提及此警告不是通过
-O0
发出的。另外
-ffast-math
切换警告是的,警告没有-O,-ffast-math或for-loop。实现
foo
也会删除此警告。我不确定,但此警告看起来像假阳性(即编译器错误).至少我看不出有什么理由发出这样的警告。