If I have a static local variable or thread_local local variable that is within an inline function that is defined in different translation units, in the final program are they
Yes, it's always the same object. By [dcl.fct.spec]/4:
An
inline
function with external linkage shall have the same address in all translation units. Astatic
local variable in anextern inline
function always refers to the same object. A type defined within the body of anextern inline
function is the same type in every translation unit.