T型的结构范围是什么

What is structural scope of a type T?

本文关键字:范围是 是什么 范围 结构      更新时间:2023-10-16

我在维基百科上找到了它:

的结构范围T(可用于定位友元函数)

有人能解释一下是什么吗?谷歌帮不了什么忙。

因为它提到了友元查找,所以在这种情况下,"结构范围"似乎是指类T的范围(当T是类时)或封闭类的范围(如果T是类内部声明的成员类型时)。整个段落的措辞听起来相当奇怪,因为C++语言没有正式将类类型称为"结构类型",也没有正式定义"结构范围"。除此之外,它似乎将类范围称为"名称空间",这是不正确的。

提到朋友,显然意味着类似的情况

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);
}

在这些情况下,只有ADL检查类T的作用域并在那里显式查找友元函数,才能解析main中对foo的调用。如果没有ADL,foomain是不可见的。