https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63876
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID Severity|major |normal --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- You've only declared a specialization, this is not a definition: template<> std::mutex CRTP_class< Foo >::mutex_; You can make it a definition with an initializer: template<> std::mutex CRTP_class< Foo >::mutex_{};