On Tue, Oct 9, 2012 at 5:05 PM, Richard Trieu <[email protected]> wrote:
> On Tue, Oct 9, 2012 at 5:04 PM, Richard Trieu <[email protected]> wrote: > >> The following code causes a crash: >> >> template<typename T> class vector2 {}; >> template<typename T> class vector : vector2<T> {}; >> >> template<typename T> void Foo(vector<const T*> V) {} >> >> void test() { >> Foo(vector<int*>()); >> } >> >> Once template deduction fails in vector, it tries again with with the >> base class vector2 and also fails, but with a different status. However, >> the TemplateDeductionInfo is updated, but the old status is kept. This >> leads to an assert later when the diagnostic is produced. This patch >> introduces a temporary TemplateDeductionInfo to capture the information >> from the base class template deduction, and only overrides the old info if >> the template deduction is successful. >> > > Oops. And here's the patch. > Ping.
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
