IMO, function pointer is a pointer which its type descriptor is a function type ... Any difference with the normal pointer? On Fri, Feb 18, 2011 at 11:00 PM, Ian Lance Taylor <iant@xxxxxxxxxx> wrote: > zhang qingshan <steven.zhang54373@xxxxxxxxx> writes: > >> /* ------- test case -------------------*/ >> void x(); >> template <typename T> >> void foo(const T*); >> >> int main() { >> foo(x); >> } >> >> GCC 4.5 complains: >> >> a.cpp: In function 'int main()': >> a.cpp:6: error: no matching function for call to 'foo(void (&)())' >> >> It seems that, const T * is resolved as void (&)()); >> >> IMO, T --> void (), const T --> void (), const T * --> void (*)(), and >> it should be leagle. > > You are confusing function pointers with pointers to data objects. They > are not the same thing in C++. That is, a function pointer is not a > special type of pointer. > > Ian >