我遇到了一个奇怪的问题,因为clang可能是也可能不是bug。
以下片段无法在clang 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的行为是否正确,而没有获得太多的洞察力。这是clang中的错误吗?
答案 0 :(得分:1)
标准确实说
friend baz ::test(bar &);
和
friend baz::test(bar &);
是等价的。
但是,我认为它们可能都应该编译。