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>
f0(T * ptr)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