Здравствуйте, Антибиотик, Вы писали:
1. не компилируется, так как foo не найдена, надо A::foo — так всё работает.
2. не понял при чём тут B.
А>имеется следующий код:
А>1
А>#include <iostream>
А>using namespace std;
А>namespace A {
А> template <typename T>
А> void foo(T*)
А> {
А> cout << "void foo(T*)\n";
А> }
А>};
А>class B {
А>public:
А> friend void A::foo<>(B*);
А>private:
А> int b_;
А>};
А>int main()
А>{
А> B b;
А> foo(&b);
А> return 0;
А>}
А>
А>который нормально компилируется, но почему-то не работает так, как ожидается. Точнее, функция foo фактически не вызывается.
А>Вопрос: если это пример Argument Dependent Name Lookup, то почему функция не вызывается, если это не ADNL, то почему нету ошибки компиляции?