https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98059
Bug ID: 98059 Summary: [11 regression] Plugins don't compile with c++20 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: plugins Assignee: unassigned at gcc dot gnu.org Reporter: s...@li-snyder.org Target Milestone: --- The following example fails with gcc 11 (20201128): $ echo '#include "gcc-plugin.h"' | g++ -x c++ -std=c++20 -c -o x.o - -I`g++ -print-file-name=plugin`/include In file included from /usr/local/gcc/lib/gcc/x86_64-pc-linux-gnu/11.0.0/plugin/include/config.h:8, from /usr/local/gcc/lib/gcc/x86_64-pc-linux-gnu/11.0.0/plugin/include/gcc-plugin.h:27, from <stdin>:1: /usr/local/gcc/lib/gcc/x86_64-pc-linux-gnu/11.0.0/plugin/include/ansidecl.h:424:9: error: expected unqualified-id before ‘const’ 424 | TYPE (const TYPE&) = delete; \ | ^~~~~ /usr/local/gcc/lib/gcc/x86_64-pc-linux-gnu/11.0.0/plugin/include/vec.h:1605:3: note: in expansion of macro ‘DISABLE_COPY_AND_ASSIGN’ 1605 | DISABLE_COPY_AND_ASSIGN(auto_delete_vec<T>); | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/local/gcc/lib/gcc/x86_64-pc-linux-gnu/11.0.0/plugin/include/ansidecl.h:424:9: error: expected ‘)’ before ‘const’ 424 | TYPE (const TYPE&) = delete; \ | ~^~~~~ /usr/local/gcc/lib/gcc/x86_64-pc-linux-gnu/11.0.0/plugin/include/vec.h:1605:3: note: in expansion of macro ‘DISABLE_COPY_AND_ASSIGN’ 1605 | DISABLE_COPY_AND_ASSIGN(auto_delete_vec<T>); | ^~~~~~~~~~~~~~~~~~~~~~~ Can be fixed with this patch: diff --git a/gcc/vec.h b/gcc/vec.h index 14d77e87342..90904515ea0 100644 --- a/gcc/vec.h +++ b/gcc/vec.h @@ -1602,7 +1602,7 @@ class auto_delete_vec : public auto_vec <T *> ~auto_delete_vec (); private: - DISABLE_COPY_AND_ASSIGN(auto_delete_vec<T>); + DISABLE_COPY_AND_ASSIGN(auto_delete_vec); }; /* Conditionally allocate heap memory for VEC and its internal vector. */