[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