[temp.pre] (original) (raw)
[Note 5:
A template cannot have the same name as any other name bound in the same scope ([basic.scope.scope]), except that a function template can share a name with using-declarators, a type, non-template functions ([dcl.fct]) and/or function templates ([temp.over]).
Specializations, including partial specializations ([temp.spec.partial]), do not reintroduce or bind names.
Their target scope is the target scope of the primary template, so all specializations of a template belong to the same scope as it does.
[Example 2: void f() {} class f {}; namespace N { void f(int) {} } using N::f; template<typename> void f(long) {} template<typename> void f(long) {} template<typename> void f(long long) {} template<> void f<int>(long long) {} — _end example_]
— _end note_]