Re Axel: Quote (Axel): "Well, I think g++ behaves correctly. As I understand the standard, the normal function foo(int) can't be used in the template "bar", because it is only declared afterwards."
Me: I don't think this can be correct. Removing the template foo() but leaving the normal one also compiles fine, yet normal foo(int) is declared after bar there too. The original code is also accepted by, at least, MSVC 08 (according to a gamedev.net reply) GameDev.Net Discussion: http://www.gamedev.net/community/forums/topic.asp?topic_id=559287 I'm pretty sure this is a bug but I'd like a confirmation (or refutation) before I submit a bug report. Thanks. Simon.