// RUN: %clang_cc1 -fsyntax-only -verify %s template<typename T> struct A { }; template<typename T, typename U = A<T*> > struct B : U { }; template<> struct A<int*> { void foo(); }; template<> struct A<float*> { void bar(); }; void test(B<int> *b1, B<float> *b2) { b1->foo(); b2->bar(); }