在C++中,以下方式声明嵌套匿名命名空间是合法的:
namespace {
namespace {
struct Foo
{
};
}
}
namespace {
struct Foo // SAME IDENTIFIER AS <unnamed>::<unnamed>::Foo!!!
{
};
}
然而,如何使用显式类型的Foo声明标识符以避免歧义呢?
编辑-- 对于那些不阅读问题的人。
p.s. 我没有使用这种结构的意图,但我需要了解是否可能在有人发现合法用途的情况下消除Foo的歧义。我的编译器扩展程序需要处理所有情况。