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);