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.
derived-template-deduction.patch
Description: Binary data
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
