14033642464e8ba0982f88f34cffad808d247b393Douglas Gregor// RUN: %clang_cc1 -fsyntax-only -verify %s 28e8fb3be5bd78f0564444eca02b404566a5f3b5dAndy Gibbs// expected-no-diagnostics 34033642464e8ba0982f88f34cffad808d247b393Douglas Gregor 44033642464e8ba0982f88f34cffad808d247b393Douglas Gregor// PR5681 54033642464e8ba0982f88f34cffad808d247b393Douglas Gregortemplate <class T> struct Base { 64033642464e8ba0982f88f34cffad808d247b393Douglas Gregor struct foo {}; 74033642464e8ba0982f88f34cffad808d247b393Douglas Gregor int foo; 84033642464e8ba0982f88f34cffad808d247b393Douglas Gregor}; 94033642464e8ba0982f88f34cffad808d247b393Douglas Gregor 104033642464e8ba0982f88f34cffad808d247b393Douglas Gregortemplate <class T> struct Derived : Base<T> { 114033642464e8ba0982f88f34cffad808d247b393Douglas Gregor typedef struct Base<T>::foo type; 124033642464e8ba0982f88f34cffad808d247b393Douglas Gregor}; 134033642464e8ba0982f88f34cffad808d247b393Douglas Gregor 144033642464e8ba0982f88f34cffad808d247b393Douglas Gregortemplate struct Derived<int>; 15