[cfe-commits] [Patch] Add highlighting and type eliding when two templates are used in a diagnostics. Also, template tree printing.

Richard Trieu rtrieu at google.com
Mon Jun 25 19:47:45 PDT 2012


On Mon, Jun 25, 2012 at 2:09 PM, Richard Trieu <rtrieu at google.com> wrote:

> On Sun, Jun 24, 2012 at 2:57 PM, Richard Smith <richard at metafoo.co.uk>wrote:
>
>> Thanks, LGTM.
>>
>>
>> Incidentally, for this example:
>>
>>
>> template<typename ...T> struct S  {};
>> template<typename T> using U = S<int, char, T>;
>> template<typename T> using V = U<U<T>>;
>> int f(S<int, char, U<const double>>);
>> int k = f(V<double>());
>>
>> I get:
>>
>> <stdin>:4:5: note: candidate function not viable: no known conversion
>> from 'S<[2
>>      * ...], *struct S<int, char, double>*>' to 'S<[2 * ...], *U<const
>>      double>*>' for 1st argument;
>>
>> where I would have preferred:
>>
>> <stdin>:4:5: note: candidate function not viable: no known conversion
>> from 'S<[2
>>      * ...], S<[2 * ...], *double*>>' to 'S<[2 * ...], S<[2 * ...], *
>> const
>>      double*>>' for 1st argument;
>>
>> Any idea what's going on there?
>>
>>
>> Looking into it.  It looks like Clang has 'struct S<int, char, double>'
> as a SubstTemplateTypeParmType instead of a TemplateSpecializationType,
> causing the template diffing to handle it as a type without going deeper.
>

Fixed.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120625/efd9c1c0/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: template-diffing5.patch
Type: application/octet-stream
Size: 75724 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120625/efd9c1c0/attachment.obj>


More information about the cfe-commits mailing list