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