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

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

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

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

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

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]