Эта программа:
#include <iostream>
struct Foo {
Foo() {
std::cout << "Foo()\n";
}
~Foo() {
std::cout << "~Foo()\n";
}
};
struct Bar {
Bar() {
std::cout << "Bar()\n";
}
~Bar() {
std::cout << "~Bar()\n";
thread_local Foo foo;
}
};
Bar bar;
int main() {
return 0;
}
Печать
Bar()
~Bar()
Foo()
для меня (GCC 6.1, Linux, x86-64). ~ Foo() никогда не вызывается. Это ожидаемое поведение?