https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105934
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- I think this is actually expected post-P0558, and I would prefer to treat that paper as a DR, because the original spec for the atomic_xxx free functions was weird and inconsistent. The partial specializations for pointer types are explicitly called out in P0558 as being broken (by allowing arithmetic on types like atomic<void*> and atomic<void(*)()>). Those free functions exist to allow writing code that is valid in both C and C++, so I don't see much motivation for supporting C++-specific syntax like explicit template arguments.