http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55576
--- Comment #5 from Marc Glisse <glisse at gcc dot gnu.org> 2012-12-04 10:47:38 UTC --- For the example of comment #3, clang compiles it happily, and comeau gives this message: "ComeauTest.c", line 12: error: type name is not allowed return f.template apply<T>(address); ^ "ComeauTest.c", line 12: warning: ambiguous class member reference -- function template "factory::apply" (declared at line 3) used in preference to type "apply<T>::apply [with T=int]" (declared at line 9) return f.template apply<T>(address); ^ detected during instantiation of "void *apply<T>::operator()(const FactoryT &, void *) const [with T=int, FactoryT=factory]" at line 18