1

不清楚为什么具有线程存储持续时间的对象没有默认初始化?例如:

#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:

如果没有为对象指定初始化器,则该对象是默认初始化的

这并没有说明对象的存储持续时间。

4

0 回答 0