я нашел об этом на wikipedia:Что такое структурный масштаб типа T?
структурного объем T (который может быть использован, чтобы найти друг функцию)
Может кто-то пожалуйста объяснить, что это такое? Google не очень помог.
я нашел об этом на wikipedia:Что такое структурный масштаб типа T?
структурного объем T (который может быть использован, чтобы найти друг функцию)
Может кто-то пожалуйста объяснить, что это такое? Google не очень помог.
Так как он упоминает друг поиск, «структурная сфера» в данном случае, как представляется, относятся к области класса 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);
}
В этих случаях вызовы foo
в main
возможно разрешить только потому, что ADL проверяет объем класса T
и явно ищет функции друзей там. Без ADL foo
будет невидимым для main
.
Затем мы должны исправить Википедию (и мы будем иметь в виду вас :-) –
Нарушение текста удалено. Я не вижу смысла в сводке [basic.lookup.argdep]/2 для статьи в Википедии. –