Мне интересно, в чем именно разница между следующими двумя объявлениями, если оба они записаны в одном заголовочном файле:
inline thread_local MyClass obj1; // inline with thread_local
thread_local MyClass obj2; // no inline
Как указано в C ++ 17, добавление inline к переменной приводит к принудительному выполнениюединицы перевода, чтобы увидеть тот же адрес этой переменной.Означает ли это, что obj2
может получить разные значения адресов в разных единицах перевода?Какую ситуацию можно выделить, чтобы использовать obj1
вместо obj2
?