p10.cpp revision ea285162342df160e7860e26528bc7110bc6c0cd
1// RUN: %clang_cc1 -fsyntax-only -verify %s 2 3template<typename T> 4struct X0 { 5 void f(T&); 6 7 struct Inner; 8 9 static T static_var; 10}; 11 12template<typename T> 13void X0<T>::f(T& t) { 14 t = 1; // expected-error{{incompatible type}} 15} 16 17template<typename T> 18struct X0<T>::Inner { 19 T member; 20}; 21 22template<typename T> 23T X0<T>::static_var = 1; // expected-error{{cannot initialize}} 24 25extern template struct X0<void*>; 26template struct X0<void*>; // expected-note 2{{instantiation}} 27 28template struct X0<int>; // expected-note 4{{explicit instantiation definition is here}} 29 30extern template void X0<int>::f(int&); // expected-error{{follows explicit instantiation definition}} 31extern template struct X0<int>::Inner; // expected-error{{follows explicit instantiation definition}} 32extern template int X0<int>::static_var; // expected-error{{follows explicit instantiation definition}} 33extern template struct X0<int>; // expected-error{{follows explicit instantiation definition}} 34