2
我遇到了一个奇怪的问题,可能是也可能不是bug。函数名称的全局名称空间说明符用typedef正确解析?
下面的代码片段无法在叮当4.2编译,但在gcc上执行,因为它解析“baz :: test”作为返回类型。
typedef int baz;
namespace foo { class bar; }
baz test(foo::bar &);
namespace foo {
class bar {
private:
int f;
friend baz ::test(bar &);
};
}
friend int ::test(bar &)
编译一样,friend baz (::test)(bar &)
。
我已经浏览了一下这个标准,试图看看clang的行为是否正确,而没有深入了解。这是叮当声中的错误吗?