https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96478

            Bug ID: 96478
           Summary: GCC accepts enum definition in alignas()
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Keywords: accepts-invalid
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: haoxintu at gmail dot com
  Target Milestone: ---

Hi, all.

This code might be a invalid code, but GCC accepts it well. Other mainstream
compilers reject this code.

Code:
namespace {
    template <class> int foo(){return 0;}
    template <>
    alignas (enum e{}) int foo<int>();
}

Output in Clang:
error: '(anonymous namespace)::e' cannot be defined in a type specifier

Output in ICC:
error: type definition is not allowed

Every version from GCC-6.1 onwards behaves the same.

Thanks,
Haoxin

Reply via email to