Нелокальный объект с длительностью хранения потока
Непонятно, почему объект с длительностью хранения потока не инициализируется по умолчанию? Например:
#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:
Если для объекта не указан инициализатор, объект инициализируется по умолчанию
Это ничего не говорит о продолжительности хранения объекта.