Thanks, LGTM.<br><br><br>Incidentally, for this example:<br><br>template<typename ...T> struct S  {};<br>template<typename T> using U = S<int, char, T>;<br>template<typename T> using V = U<U<T>>;<br>
int f(S<int, char, U<const double>>);<br>int k = f(V<double>());<br><br>I get:<br><br><stdin>:4:5: note: candidate function not viable: no known conversion from 'S<[2<br>      * ...], <b>struct S<int, char, double></b>>' to 'S<[2 * ...], <b>U<const<br>
      double></b>>' for 1st argument;<br><br>where I would have preferred:<br><br><stdin>:4:5: note: candidate function not viable: no known conversion from 'S<[2<br>      * ...], S<[2 * ...], <b>double</b>>>' to 'S<[2 * ...], S<[2 * ...], <b>const<br>
      double</b>>>' for 1st argument;<br><br>Any idea what's going on there?<br><br>On Fri, Jun 22, 2012 at 7:16 PM, Richard Trieu <<a href="mailto:rtrieu@google.com">rtrieu@google.com</a>> wrote:<br>> On Fri, Jun 22, 2012 at 5:43 PM, Richard Smith <<a href="mailto:richard@metafoo.co.uk">richard@metafoo.co.uk</a>><br>
> wrote:<br>>><br>>> On Fri, Jun 22, 2012 at 4:59 PM, Richard Trieu <<a href="mailto:rtrieu@google.com">rtrieu@google.com</a>> wrote:<br>>> > Updated template diffing patch.<br>>><br>>> Updated patch looks good to me, but I found a crash on this code while<br>
>> playing with it:<br>>><br>>> template<typename ...T> struct S  {};<br>>> template<typename T> using U = S<int, char, T>;<br>>> int f(S<int, char, double>);<br>>> int k = f(U<char>());<br>
><br>><br>> Fixed it.  Also added your example to the tests.<br>><br>> _______________________________________________<br>> cfe-commits mailing list<br>> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>><br><br>