Есть ли какие-либо предостережения относительно использования thread_local
продолжительности хранения:
template <class T>
inline T &thread_local_get()
{
thread_local T t;
return t;
}
Потом в разных потоках (например)
thread_local_get<float>() += 1.f;
В документе cppreference говорится о продолжительности локального хранилища потока:
продолжительность хранения потока. Объект выделяется, когда поток начинается, и освобождается, когда поток заканчивается. У каждого потока есть собственный экземпляр объекта. Только объекты, объявленные thread_local, имеют этот срок хранения. thread_local может появляться вместе со static или extern для настройки связи.
Правильно ли это выделяет один thread_local
экземпляр для каждого T (во время компиляции) и каждого вызывающего потока? Есть ли ситуация, которая может привести, например, к неопределенному поведению?