Argument-dependent Name Lookup - Type-associated Namespaces

Type-associated Namespaces

The set of associated namespaces for any type T is the structural scope of T (which can be used to locate friend functions) and the namespace where T is defined, if T is a structure type, together with the namespaces associated with the structure types necessary for defining the type T, excluding the types necessary only for defining members. This set of associated namespaces is included for resolving a function call lookup with an argument of type T.

Read more about this topic:  Argument-dependent Name Lookup