1// { dg-do assemble } 2 3// According to the non-normative example in 4// [temp.class.spec.mfunc]/2, these should be valid, but the grammar 5// in the Standard does not allow partial nor full specializations as 6// member-declarations, so we'd better not support them. 7 8template <class T> 9struct S { 10 template <class U> void f(U); 11 template <> void f<int>(int); // { dg-error "" } invalid specialization 12 13 template <class V> struct I {}; // { dg-error "template" } 14 template <class V> struct I<V*> {}; // { dg-error "template" } 15 template <> struct I<int>; // { dg-error "" } invalid specialization 16}; 17