我在 wikipedia 上找到了它:
structural scope of T (which can be used to locate friend functions)
谁能解释一下这是什么? Google 帮不上什么忙。
最佳答案
因为它提到了友元查找,这种情况下的“结构范围”似乎是指类 T
的范围(当 T
是一个类时)或封闭的范围类(当 T
是在类中声明的成员类型时)。整个段落的措辞听起来很奇怪,因为 C++ 语言没有正式地将类类型称为“结构类型”,也没有正式定义“结构范围”。最重要的是,它似乎将类作用域称为“命名空间”,这是不正确的。
通过提到 friend ,它显然暗示了这样的情况
struct T {
friend void foo(T) {}
};
int main() {
T t;
foo(t);
}
或
struct T {
enum E { A };
friend void foo(E) {}
};
int main() {
T::E e = T::A;
foo(e);
}
在这些情况下,在 main
中对 foo
的调用是可能解析的,因为 ADL 检查类 T
的范围并显式寻找 friend在那里发挥作用。如果没有 ADL,foo
将对 main
不可见。
关于c++ - T型的结构范围是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33910045/