我有一个类,它在类中声明和定义了一个友元函数,我从类中的另一个函数调用这个函数。Clang 编译器 (3.3) 抱怨友元函数的未声明标识符。我已经用 MSVC 和 gcc 编译了这段代码,它适用于两个编译器,但现在使用 Clang 端口我遇到了这个问题。这是问题的简化示例:
class foo
{
friend void bar() {}
void asd() {bar();}
};
在 Clang 中,我得到:error : use of undeclared identifier 'bar'
。如果我在类外声明/定义 pla(),它可以正常工作,但是我有一些宏迫使我在类中定义函数。这是 Clang 中的一些已知问题,还是 Clang 在仍然符合 C++ 标准的同时对 C++ 名称查找更加迂腐?在类中定义/声明函数时是否有一些已知的解决方法?