https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69769
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- For atomic<void*> Clang rejects use of its builtin with a void*: /usr/local/libcxx-head/include/c++/v1/atomic:1081:40: error: incomplete type 'void' where a complete type is required But it allows the function pointer case. Arguably it makes sense for __atomic_fetch_add etc. to do the checking, although the fact that GCC does allow arithmetic on void* complicates that.