A::B::B::B::B...B::f() 对吗?为什么我可以那样做?

Is A::B::B::B::B...B::f() right ? Why could i do that?

我不知道怎么解释:

namespace A
{
struct B
{
  static void  f()
  {
  }
};
}

int  main()
{
  A::B::B::B::B::B::B::B::B::B::B::f();
}

为什么我可以:

A::B::B::B::B::B::B::B::B::B::B::f();

我不明白为什么会这样。

这是由于injected-class-name

在classB中,B指classB,如B::B.

所以A::B::B指的是classB。等等。