------- Additional Comments From pinskia at gcc dot gnu dot org 2005-03-05 19:40 ------- I take that back, this is invalid code still, the typename keyword is not valid outside of a template. Reduced testcase: template<class> struct f {}; f<int> f2[2] = {typename f<int>()};
This is a regression from 3.3.3. We should be able to recover much better in 3.4.0 than we did in 3.3.3 but we don't. In fact I would have assumed that we would get a better error message before ICEing. Even though in the full testcase we don't get an error, we do in the reduced testcase though: t.cc:3: error: expected nested-name-specifier -- What |Removed |Added ---------------------------------------------------------------------------- CC| |pinskia at gcc dot gnu dot | |org Status|UNCONFIRMED |NEW Ever Confirmed| |1 Keywords| |error-recovery, ice-on- | |invalid-code Known to fail| |3.4.0 4.1.0 Known to work| |3.3.3 Last reconfirmed|0000-00-00 00:00:00 |2005-03-05 19:40:09 date| | Summary|ICE |[3.4/4.0/4.1 Regression] ICE | |on invalid code, typename | |outside of a template Target Milestone|--- |3.4.4 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20333