友元 命名空间,该如何解决

友元 命名空间uing namespace Test{class A{public:friend void f1(const A& a)}void f2(const A&a)}cl

友元 命名空间
uing namespace Test
{
  class A
  {
    public:
      friend void f1(const A& a);
  };
  void f2(const A&a);
}

  class B
  {
    public:
      operator Test::A(){return Test::A();}
   };

using namespace Test
{
  void f3(const A& a);
}

void main()
{
  B b;
  f1(b);
  f2(b);
  f3(b);
}

f1 编译不通过 f2 f3 编译通过 是什么原因呢
Test::A() 这种是函数对象的用法吗
[解决办法]

引用:
Test::A() 这种是什么用法呢
类型转换符,提供B类型向A类型的隐式转换