我遇到了一个奇怪的问题,可能是也可能不是错误。
以下代码段无法在 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中的错误吗?