http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51664
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-12-23 14:41:17 UTC --- Richard: yes. [temp.names] p3 says -3- After name lookup (3.4) finds that a name is a template-name or that an operator-function-id or a literal-operator-id refers to a set of overloaded functions any member of which is a function template if this is followed by a <, the < is always taken as the delimiter of a template-argument-list and never as the less-than operator. [...] but then p4 should apply in this case: -4- When the name of a member template specialization appears after . or -> in a postfix-expression or after a nested-name-specifier in a qualified-id, and the object expression of the postfix-expression is type-dependent or the nested-name-specifier in the qualified-id refers to a dependent type, but the name is not a member of the current instantiation (14.6.2.1), the member template name must be prefixed by the keyword template. Otherwise the name is assumed to name a non-template. Let's see what Jason says