http://llvm.org/bugs/show_bug.cgi?id=8173

Douglas Gregor <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID

--- Comment #2 from Douglas Gregor <[email protected]> 2011-10-09 16:40:14 CDT 
---
Clang is correct here, per C++0x [temp.deduct.call]p6, which states that

  - If the argument is an overload set (not containing function templates),
trial argument deduction is attempted using each of the members of the set. If
deduction succeeds for only one of the overload set members, that member is
used as the argument value for the deduction. If deduction succeeds for more
than one member of the overload set the parameter is treated as a non-deduced
context.

For the call to the "connect" function, this matters for the parameter

  ReturnType (MemberObj:: *fn) (Arg1)

which is matched against the argument

  &B::slot

Note that deduction succeeds for both "slot" overloads, so this parameter is
considered a non-deduced context. Hence, there is nothing left to deduce
MemberObj.

Note that EDG agrees with Clang's interpretation here. I don't know what GCC is
doing to accept this code.

-- 
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.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to