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?
On Fri, Jun 22, 2012 at 7:16 PM, Richard Trieu <[email protected]> wrote:
> On Fri, Jun 22, 2012 at 5:43 PM, Richard Smith <[email protected]>
> wrote:
>>
>> On Fri, Jun 22, 2012 at 4:59 PM, Richard Trieu <[email protected]> wrote:
>> > Updated template diffing patch.
>>
>> Updated patch looks good to me, but I found a crash on this code while
>> playing with it:
>>
>> template<typename ...T> struct S {};
>> template<typename T> using U = S<int, char, T>;
>> int f(S<int, char, double>);
>> int k = f(U<char>());
>
>
> Fixed it. Also added your example to the tests.
>
> _______________________________________________
> cfe-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits