读书人

C++一个奇怪的有关问题

发布时间: 2014-01-14 23:14:00 作者: rapoo

C++一个奇怪的问题

#include <iostream>
template <typename T>
class C{
friend void f(){std::cout<< "f() called "<<std::endl;};
friend void f(C<T>*){std::cout<< "f(C<T> const&) called"<<std::endl;};
};

int main()
{
C<int> *p;
//f(); // f was not declared
f(p);// but , f(C<T>*) has been declared
return 0;
}

为什么f()未声明,而f(C<T>*)已声明呢?
[解决办法]
LZ google 一下 ADL (Argument-Dependent Lookup)

读书人网 >C++

热点推荐