Is there a difference between these two code segments:
void f() {
thread_local vector V;
V.clear();
... // use V as a temporary variab
When used with thread_local, static is implied in block-scope (see @Vlad's answer), requied for a class member; I guess, means linkage for namespace scope.
Per 9.2/6:
Within a class definition, a member shall not be declared with the thread_local storage-class-specifier unless also declared static
To answer the original question:
Are C++11 thread_local variables automatically static?
There is no choice, except for namespace-scope variables.
Is there a difference between these two code segments:
No.