http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31584
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |accepts-invalid Summary|[DR502] ICE on probably |[DR502] nested enum not |invalid code |considered dependent Known to fail| |4.4.3, 4.5.2, 4.6.0 --- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-05-05 17:32:15 UTC --- Summary changed, as there's no ICE now. This is 'accepts-invalid' because DR502 means C<T>::Inner is dependent, and [temp.class.spec]/8 says specialized non-type arguments shall not have dependent types. Reduced: template <class T> struct C { enum Inner { c }; template<Inner I, int dummy> struct Dispatcher; template<int dummy> struct Dispatcher<c, dummy> { }; }; int main() { C<double> Test; } expected error would be something like: error: type 'C<T>::Inner' of template argument 'c' depends on a template parameter