1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -fsyntax-only -verify %s 2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<typename T> struct A { }; 4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<typename T, typename U = A<T*> > 6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao struct B : U { }; 7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<> 9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct A<int*> { 10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void foo(); 11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}; 12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<> 14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct A<float*> { 15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void bar(); 16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}; 17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid test(B<int> *b1, B<float> *b2) { 19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao b1->foo(); 20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao b2->bar(); 21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 22