我遇到了一个奇怪的 clang 问题,它可能是也可能不是错误。
以下代码片段无法在 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 中的错误吗?
最佳答案
标准确实这么说
friend baz ::test(bar &);
和
friend baz::test(bar &);
是等价的。
但是,我认为它们应该都可以编译。
关于c++ - 使用 typedef 错误解析函数名称的全局 namespace 说明符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15671945/