What is T? ie, what is Atomic being instantiated with?
if char, then line 12 likely crashes. (To print out the address of a variable using cout generically you need some nasty typecasting since char* are interpreted by the IO stream library as C-style strings).
T is just a variable. This is a template class. I have used T for many primitive and user-defined data types. like int, float, bool, Node and etc. And I don't need to explicitely do any typecasting. So, I don't understand why the addresses are different?