1 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 2 3 template<typename T> 4 struct X0 { 5 struct MemberClass; 6 7 T* f0(T* ptr); 8 9 static T* static_member; 10 }; 11 12 template class X0<int(int)>; // ok; nothing gets instantiated. 13 14 template<typename T> 15 struct X0<T>::MemberClass { 16 T member; 17 }; 18 19 template<typename T> 20 T* X0<T>::f0(T* ptr) { 21 return ptr + 1; 22 } 23 24 template<typename T> 25 T* X0<T>::static_member = 0; 26 27 template class X0<int>; // ok 28 29 30 template<typename T> 31 struct X1 { 32 enum class E { 33 e = T::error // expected-error 2{{no members}} 34 }; 35 }; 36 template struct X1<int>; // expected-note {{here}} 37 38 extern template struct X1<char>; // ok 39 40 template struct X1<char>; // expected-note {{here}} 41