[LLVMbugs] [Bug 11856] Bad diagnostic when member reference collides with global template function
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Sat Mar 10 15:53:33 PST 2012
http://llvm.org/bugs/show_bug.cgi?id=11856
Douglas Gregor <dgregor at apple.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
--- Comment #2 from Douglas Gregor <dgregor at apple.com> 2012-03-10 17:53:33 CST ---
(In reply to comment #1)
> clang, gcc and edg all agree that "it1->end <" starts a template-id. Is it
> possible they're all wrong?
EDG 4.3, at least, does not assume that "it1->end <" starts a template-id.
The paragraph that matters here is [basic.lookup.classref]p1:
"In a class member access expression (5.2.5), if the . or -> token is
immediately followed by an identifier followed by a <, the identifier must be
looked up to determine whether the < is the beginning of a template argument
list (14.2) or a less-than operator. The identifier is first looked up in the
class of the object expression. If the identifier is not found, it is then
looked up in the context of the entire postfix-expression and shall name a
class template."
Since "it1" is dependent, presumably the identifier is not found so we consider
what happens if we look in the context of the entire postfix-expression. Since
we find a function template, we should not conclude that we have the start of a
template-id.
Fixed in Clang r152520.
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list