Нелокальный объект с длительностью хранения потока

Непонятно, почему объект с длительностью хранения потока не инициализируется по умолчанию? Например:

#include <iostream>

using std::cout;
struct S
{
    S(){ cout << "S\n"; }
    ~S(){ cout << "~S\n"; }
};

thread_local S s;

int main()
{
}

IdeOne

stdout пустой. Но я ожидал, что stdout будет содержать

S
~S

Это потому что сек. 8.5/12 N3797:

Если для объекта не указан инициализатор, объект инициализируется по умолчанию

Это ничего не говорит о продолжительности хранения объекта.

0 ответов

Другие вопросы по тегам