The initial value stored in TLSSlot is not being
explicitly default-constructed. This leads to garbage
values coming from a variable of type e.g.
ThreadLocal<int> because the value has not been
initialized. I needed to provide a wrapper class to
get predictable results.
Since the value held in the TLSSlot must be default
constructible anyway, how about making the TLSSlot ctor
NEW : _value()
so that ThreadLocal<T> works as expected with primitive