a thread_local is just a global variable. Mutable global variables are of course bad, but in this case the threadindex is immutable once created, so it is perfectly fine.
Yes, technically it is of course fine, just as a design I find use of thread_local is more of an afterthought than something I'd prefer.
Yes, technically it is of course fine, just as a design I find use of thread_local is more of an afterthought than something I'd prefer.