Everything I've read/watched about C++11 says you should avoid using atomic_thread_fence and instead use std::atomic<> directly.