constvalues are always inlined and have no address in memory.
staticvalues are never inlined and have one instance with a fixed address.
static mutvalues are not memory safe and thus can only be accessed in an
lazy_staticobjects are immutable, are initialized only once, are shared among all threads, and can be directly accessed (there are no wrapper types involved). In contrast,
thread_localobjects are meant to be mutable, are initialized once for each thread, and accesses are indirect (involving the wrapper type