Здравствуйте, stil.man, Вы писали:
SM>Я не хочу вдаваться в такие вещи как "two-phase name lookup" или ADL, потому что все таки это особенности реализации компиляторов, и в стандарте о них нет ни слова.
ADL вполне себе стандартизованная вещь, хотя не имеет отношения к данной проблеме
SM>Я хочу понять, какое поведение как правильное определяется стандартом ?
не могу сказать точно, но интуитивном уровне подоpреваю баг у гцц.
гцц славится своей способностью "компилировать" шаблоны (то есть как-то их препроцессить еще до фазы инстанциирования). на этой фазе базовый класс неизвестен и гцц неверно подставляет вызов функии foo
SM>И как с этим вообще жить ? Почему так ?
более явно можно прописывать, что за функцию мы вызываем
::foo(); // вызываем глобальную функцию
this->foo(); // вызываем свою
успехов