An unnamed namespace is equivalent to essentially writing:
namespace __compiler_generated_unique {
}
using namespace __compiler_generated_unique;
So it's like having a using directive at global scope. And using directives are transitive.
For a normative reference, here it is from n4861 (The C++20 standard draft):
[namespace.unnamed]
1 An unnamed-namespace-definition behaves as if it were replaced
by
inline namespace unique { /* empty body */ }
using namespace unique ;
namespace unique { namespace-body }
where inline appears if and only if it appears in the
unnamed-namespace-definition and all occurrences of unique in a
translation unit are replaced by the same identifier, and this
identifier differs from all other identifiers in the translation unit.
The optional attribute-specifier-seq in the
unnamed-namespace-definition appertains to unique.
[namespace.udir]
4 For unqualified lookup ([basic.lookup.unqual]), the using-directive is transitive: if a scope contains a using-directive that nominates a second namespace that itself contains using-directives, the effect is as if the using-directives from the second namespace also appeared in the first.