Isn't it true that in practice, ordinary pointers are often slighly more
thread-safe than shared_ptr because on many platforms pointer assignments
are atomic, while shared_ptr assignments are not. Portable programs can't
rely on pointer assignments being atomic, of course, so I'm not suggesting
one should make use of this fact, but it might explain why people can be
surprised by this observed difference in behaviour.