// RUN: %clang_cc1 -ast-print -std=c++14 %s -v -o %t.1.cpp // RUN: %clang_cc1 -ast-print -std=c++14 %t.1.cpp -o %t.2.cpp // RUN: diff %t.1.cpp %t.2.cpp // Specializations template class C0 {}; template<> class C0 {}; template<> class C0 {}; C0 c0; template class C1 {}; template<> class C1<11> {}; C1<2> c1a; C1<4> c1b; template class C2a {}; template class C2b {}; template class TC> class C2 {}; template<> class C2 {}; C2 c2; // Default arguments template class C10 {}; template class C11 {}; template class C12a {}; //FIXME: template class TC = C12a> class C12 {}; //FIXME: template class TC = C12a> class C13 {}; // Partial specializations template struct C20 { T a; U b; }; template struct C20 { T a; }; template struct C21 { U a; U b[N]; }; template struct C21 { int a[N]; }; template class TC, typename U> struct C22 { TC a; U b; }; template class TC> struct C22 { TC a; }; // Declaration only template class C30; template<> class C30; template<> class C30; extern C30 c30;