[LLVMbugs] [Bug 6723] Deduced/Explicit template arguments to parameter conversions madness

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sat Mar 27 19:50:54 PDT 2010


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

Douglas Gregor <dgregor at apple.com> changed:

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

--- Comment #2 from Douglas Gregor <dgregor at apple.com> 2010-03-27 21:50:54 CDT ---
(In reply to comment #1)
> I've got a typo there:
> 
> > The behavior of EDG is that in f, it compiles everything, so it gives "C" the
> value 512, but the type unsigned int.
> 
> Should say
> 
> > The behavior of EDG is that in f, it compiles everything, so it gives "C" the
> value 512, but the type unsigned char.
> 
> I figured it could cause confusion so i corrected :)

EDG seems to be behaving strangely here, as did Clang. IMO, these should be
deduction failures, since we should convert the deduced template argument to an
unsigned char (value of 0) and then produce a deduction failure when we try to
form the zero-length array.

Clang had two problems, both fixed in r99734: first, we weren't actually
checking the deduced template arguments against the template parameter, so we
weren't converting non-type template arguments appropriately. Second, we only
had a little extension warning (shown only with -pedantic) when forming a
zero-length array, not the hard error it needs to be for SFINAE to work.

-- 
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