__thread Foo foo;
Как "foo" фактически разрешен? Разве компилятор молча заменяет каждый экземпляр "foo" вызовом функции? "Foo" хранится где-то по отношению к нижней части стека, а компилятор сохраняет это как "эй для каждого потока", это пространство у основания стека, а foo хранится как "смещение x из нижней части стека", "?