https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93503
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Known to fail| |12.0, 4.4.6 Target Milestone|--- |9.5 Known to work| |4.1.2 Summary|Duplicated warning on pure |[9/10/11/12 Regression] |virtual implicit template |Duplicated warning on pure |in C++2a |virtual template --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Even without concepts we have a duplicated error message: struct S { template<int> virtual int foo(int) = 0; }; We once warn for the virtual and then again for the = 0 part. GCC 4.1.2 just to produce just: <source>:3: error: invalid use of 'virtual' in template declaration of 'virtual int S::foo(int)' While GCC 4.4 and above produce: <source>:3: error: templates may not be 'virtual' <source>:3: error: templates may not be 'virtual' So this is a regression even for the C++98 case.