I have following code snippet :
    namespace A {
      class X { 
          X()
          {
              std::cout<< " I am here in Constructor";      
          }
          };
    }
    namespace B 
    {
      void X(int)
      {
         std::cout << " I am in a function"; 
      };
    }
    using A::X;
    using B::X;
    void f() {
      X(1);   //Will call B::X(int) func          
    }
    int main()
    {
        f();  
        class X x;
        return 0;
    }
Following statements hides class A::X according to section 3.3.10
using A::X;
using B::X
But class should be accessed with a Elaborated type specifier and following statements should perfectly create an object:
class X x;
But it is giving error :
In function 'int main()': 38:13: error: aggregate 'main()::X x' has incomplete type and cannot be defined
Live Demo - http://cpp.sh/4bm4
What is wrong here??
Am i misunderstanding something ??