A::B::B::B::B...B::f() 正确吗?我为什么能这样做?

6

我不知道如何解释这个:

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();

我不明白为什么会发生这种情况。


4
也许你需要使用“语言律师”标签。看起来你发现了一枚 C++ 彩蛋。 - Eljay
1
另一个重复问题:https://stackoverflow.com/questions/65077931/why-does-this-use-of-using-declaration-compile - 463035818_is_not_a_number
1
很难找到这样的重复项,我之所以能找到它,是因为我记得它与蝙蝠侠有关 :) - 463035818_is_not_a_number
这很有趣。https://godbolt.org/z/hPfaoj - Ghasem Ramezani
@largest_prime_is_463035818,我更喜欢那种形式的问题 ;) - Mansoor
1个回答

9

这是由于注入类名的原因。

在B类内部,B指向类B本身,即B::B

因此,A::B::B指向类B,以此类推。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接