C++ 螺纹_局部x(2)不';t调用构造函数

C++ 螺纹_局部x(2)不';t调用构造函数,c++,c++11,ssl,thread-local-storage,C++,C++11,Ssl,Thread Local Storage,thread\u local在C++11中定义为具有动态初始化语义,因此允许将非POD类型声明为thread local。然而,在这个程序中,我得到了一个意想不到的结果: #include <iostream> struct A { A() : repr_(0) {} A(int) : repr_(2) {} int repr_; }; thread_local A x(2); int main() { std::cerr << x.repr_ <&

thread\u local
在C++11中定义为具有动态初始化语义,因此允许将非POD类型声明为thread local。然而,在这个程序中,我得到了一个意想不到的结果:

#include <iostream>
struct A {
  A() : repr_(0) {}
  A(int) : repr_(2) {}
  int repr_;
};
thread_local A x(2);
int main() {
  std::cerr << x.repr_ << "\n";
  return 0;
}
如果我将
线程\u local
行替换为:

thread_local A x = A(2);
这是怎么回事

适用于gcc 5.4——旧编译器中的bug?
thread_local A x = A(2);