http://www.gamedev.net/community/forums/topic.asp?topic_id=559287
SOURCE ================================ template <typename pTYPE> void foo(pTYPE arg) { arg.nid(); } template <typename pTYPE> void bar() { pTYPE var; foo(var); } void foo(int) {} int main() { int i; foo(i); // OK: Resolves foo(int). bar<int>(); // ERROR: Fails to resolve foo(int). } =============================== It seems to me now that this is a bug with GCC. Can someone confirm this please? See the gamedev.net link for reasoning. I won't duplicate it here. There's a large number of name lookup bugs in the database but I couldn't find a matching one. Thanks. Simon.