https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78360
--- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- This points to a defect in the P0012R1 implementation: markus@x4 tmp % cat facet.ii struct locale; template <typename> bool has_facet(const locale &) throw(); extern template bool has_facet<int>(const locale &); markus@x4 tmp % clang++ -std=c++1z -c facet.ii facet.ii:3:22: error: explicit instantiation of 'has_facet' does not refer to a function template, variable template, member function, member class, or static data member extern template bool has_facet<int>(const locale &); ^ facet.ii:2:26: note: candidate template ignored: could not match 'bool (const locale &) throw()' against 'bool (const locale &)' template <typename> bool has_facet(const locale &) throw(); ^ 1 error generated. markus@x4 tmp % g++ -Wall -Wextra -std=c++1z -c facet.ii markus@x4 tmp %