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