#include <iostream>
using namespace std;
struct bar {
struct foo {
foo () {
cerr << "foo" << endl;
}
int i = 42;
};
static thread_local foo FOO;
};
static thread_local bar::foo FREE_FOO;
thread_local bar::foo bar::FOO;
int main() {
bar b;
cerr << "main" << endl;
cerr << FREE_FOO.i << endl;
cerr << b.FOO.i << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBiYXIgewogICAgc3RydWN0IGZvbyB7CiAgICAgICAgZm9vICgpIHsKICAgICAgICAgICAgY2VyciA8PCAiZm9vIiA8PCBlbmRsOwogICAgICAgIH0KICAgICAgICBpbnQgaSA9IDQyOwogICAgfTsKCiAgICBzdGF0aWMgdGhyZWFkX2xvY2FsIGZvbyBGT087Cn07CgpzdGF0aWMgdGhyZWFkX2xvY2FsIGJhcjo6Zm9vIEZSRUVfRk9POwp0aHJlYWRfbG9jYWwgYmFyOjpmb28gYmFyOjpGT087CgppbnQgbWFpbigpIHsKICAgIGJhciBiOwogICAgY2VyciA8PCAibWFpbiIgPDwgZW5kbDsKICAgIGNlcnIgPDwgRlJFRV9GT08uaSA8PCBlbmRsOwogICAgY2VyciA8PCBiLkZPTy5pIDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQ==