Friendly не уточняется, поэтом
Автор admin Среда, 20 мая 2009 11:32
Friendly не уточняется, поэтому компилятор предполагает, что когда-нибудь ему удастся связать это объявление с определением на уровне файла (область видимости пространства имен, содержащего Friendly в данном примере). Определение следует после определения функции h(). С другой стороны, с вызовом f() внутри h() дело обстоит совершенно иначе — он разрешается с использованием ADL. Поскольку аргументом f() внутри h() является объект Friendly, поиск объявления f() производится в классе Friendly и завершается успехом. Но если бы вместо этого вызов имел вид f(l) (что в общем-то логично, поскольку значение 1 может быть косвенно преобразовано во Friendly(l)), компилятор не узнал бы, где ему искать объявление f(). В этом случае внешний интерфейс EDG справедливо жалуется на то, что переменная f не определена. Разрешение имен 223 Теперь предположим, что и Friendly, и f являются шаблонами, как в следующей программе: //: C05:FriendScope2.cpp #include
Комментарии закрыты.
Последние комментарии