// RUN: %clang_cc1 -fsyntax-only -verify %s
// expected-no-diagnostics
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();
}