Какова структурная область применения типа T?

Я нашел об этом на википедия :

структурная область действия T (которая может использоваться для поиска функций-друзей)

Может кто-нибудь объяснить, что это? Гугл не сильно помог.

4

Решение

Поскольку в нем упоминается поиск друзей, в данном случае «структурная область» относится к области класса. 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,

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]