18.2.4. Overloading and Namespaces
Namespaces have two impacts on function matching (§ 6.4, p. 233). One of these should be obvious: A
using declaration or directive can add functions to the candidate set. The other is much more subtle.
Argument-Dependent Lookup and Overloading
As we saw in the previous section, name lookup for functions that have class-type arguments includes the namespace in which each argument’s class is defined. This rule also impacts how we determine the candidate set. Each namespace that defines a class used as an argument (and those that define its base classes) is searched for candidate functions. Any functions in those ...