Under the current standard, the following program should not compile: static void f(int) {} template <class T> void t(T t) { f(t); } void g() { t(1); }
EDG 3.0 rejects it. The C++ standard clause 14.6.4.2 states that function calls depending on template parameters may only consider function declarations with external linkage. I have no doubt this is a bug, but I'm not sure whether anybody should bother fixing it or not, because issue 561 may change this situation: http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#561 -- Summary: dependent name resolution finds static functions Product: gcc Version: 4.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: andrew dot stubbs at st dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29165