不清楚为什么具有线程存储持续时间的对象没有默认初始化?例如:
#include <iostream>
using std::cout;
struct S
{
S(){ cout << "S\n"; }
~S(){ cout << "~S\n"; }
};
thread_local S s;
int main()
{
}
stdout
是空的。但我预计这stdout
将包含
S
~S
这是因为秒。8.5/12 N3797:
如果没有为对象指定初始化器,则该对象是默认初始化的
这并没有说明对象的存储持续时间。