http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54005
--- Comment #5 from Andrew Macleod <amacleod at redhat dot com> 2012-08-14 03:27:28 UTC --- huh, somehow this got submitted before I finished. :-P For libstdc++, the macros SHOULD use __atomic_always_lock_free() since they are intended to be used in #ifdef's and such and we want those resolved at compile time for use with compiler sequences. The is_lock_free() method should continue to call the __atomic_is_lock_free(). That question may not be answerable without asking whatever libatomic is linked into the executable. Just because the compiler doesn't know a type is lock free doesn't mean the library doesn't have a lock free implementation.