Suppose we have this code, copied from a separate question:

```
namespace x 
{
    void f()
    {
    }

    class C 
    {
        void f() 
        {
            using x::f;
            f();         // <==
        }
    };
}

```

The name `f` on the indicated line unambiguously refers to `x::f` (at least according to both gcc and clang). Why is `x::f` preferred over `x::C::f` in this case? Shouldn't it be ambiguous as both names are visible?