本地类中友元函数的名称查找
Name lookup of friend function in local class
编译以下内容:
void bar() { /* ... */ }
void foo()
{
struct MyStruct
{
friend void bar();
};
}
int main()
{
//..
}
导致错误:
错误:本地类中没有先前声明的友元声明"void bar()"
为什么名称查找失败?我该怎么修?
即使您是The name of a local class is local to its enclosing scope
-§9.8/1中的好友,也不能访问超出其封闭范围的本地类。
然而,如果你只是想让它编译,明确地告诉它在全局范围内。。。
friend void ::bar();
*由于某种原因,这在VS中修复了它,但在GCC中没有修复
§11.3/11(感谢jrok)
如果友元声明出现在局部类(9.8)中,并且指定的名称是非限定名称,则查找声明时不考虑最里面的封闭非类作用域之外的作用域。
相关文章:
- 递归ASMVisitor 和查找函数调用站点
- C++ - 查找函数无法在子字符串上执行
- 查找函数是否为常量
- GDB 如何查找函数退出的位置
- 查找函数在unordered_map中的工作方式是搜索键值
- 在 C++ <algorithm>中查找函数
- 错误:二进制表达式的操作数无效(映射使用查找函数错误)
- 哪个查找规则阻止编译器查找函数
- 在C++中查找函数的调用方(Visual Studio)
- 关于获取行和字符串查找函数的问题
- 查找函数在失败结果中应该返回什么
- 如何使用调用和别名指令在 llvm 字节码中查找函数名称
- std::字符串类查找函数不返回预期结果.我可能用错了
- 在成对向量中查找函数时出错
- 从堆栈指针中查找函数参数值
- 如何定义查找函数
- 如何查找函数是否可重入
- 在c++中查找函数
- GNU g++ 4.9.2 查找函数调用的编译错误
- 使用GDB查找函数对应的内存地址/调试