Summary: | [DR2351] Failure to compile void{} | ||
---|---|---|---|
Product: | gcc | Reporter: | Gabriel Ravier <gabravier> |
Component: | c++ | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | gabravier, jakub, Mark_B53, mpolacek, webrown.cpp |
Priority: | P3 | Keywords: | rejects-valid |
Version: | 12.0 | ||
Target Milestone: | 12.0 | ||
See Also: | https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106863 | ||
Host: | Target: | ||
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | 2021-10-18 00:00:00 | |
Bug Depends on: | |||
Bug Blocks: | 94404 | ||
Attachments: | gcc12-pr102820.patch |
Description
Gabriel Ravier
2021-10-18 19:00:05 UTC
Confirmed. Created attachment 51638 [details] gcc12-pr102820.patch Untested fix. The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>: https://gcc.gnu.org/g:eca767aa51d1f69614222ceb130ca6bb07713232 commit r12-4782-geca767aa51d1f69614222ceb130ca6bb07713232 Author: Jakub Jelinek <jakub@redhat.com> Date: Fri Oct 29 09:28:32 2021 +0200 c++: Implement DR2351 - void{} [PR102820] Here is an implementation of DR2351 - void{} - where void{} after pack expansion is considered valid and the same thing as void(). For templates, if CONSTRUCTOR_NELTS is 0, the CONSTRUCTOR is not dependent and we can return void_node right away, if it is dependent and contains only packs, then it is potentially zero element and so we need to build CONSTRUCTOR_IS_DEPENDENT CONSTRUCTOR, while if it contains any non-pack elts, we can diagnose it right away. 2021-10-29 Jakub Jelinek <jakub@redhat.com> PR c++/102820 * semantics.c (maybe_zero_constructor_nelts): New function. (finish_compound_literal): Implement DR2351 - void{}. If type is cv void and compound_literal has no elements, return void_node. If type is cv void and compound_literal might have no elements after expansion, handle it like other dependent compound literals. * g++.dg/cpp0x/dr2351.C: New test. Implemented now. *** Bug 108591 has been marked as a duplicate of this bug. *** |