https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59256
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |accepts-invalid --- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- Uh, just rediscovered this and recreated exactly the same reduced testcase! Also, this variation which should not compile (because lookup should fail for N::f): namespace N { namespace detail { inline namespace ver { template<typename T> void f(); } } template<typename T> void detail::f() { } } int main() { N::f<int>(); } Somehow the fact N::detail::ver is an inline namespace causes N::detail::f to also be declared in N.