Re: Проблема с Dependent Name Lookup
От: The_Thing Россия
Дата: 29.09.09 09:07
Оценка:
Здравствуйте, Антибиотик, Вы писали:
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, то почему нету ошибки компиляции?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.