| // { dg-do assemble } |
| |
| // According to the non-normative example in |
| // [temp.class.spec.mfunc]/2, these should be valid, but the grammar |
| // in the Standard does not allow partial nor full specializations as |
| // member-declarations, so we'd better not support them. |
| |
| template <class T> |
| struct S { |
| template <class U> void f(U); |
| template <> void f<int>(int); // { dg-error "20:template-id .f<int>. in declaration|explicit specialization" } |
| |
| template <class V> struct I {}; |
| template <class V> struct I<V*> {}; |
| |
| template <> struct I<int>; // { dg-error "" } invalid specialization |
| }; |