[Bug c++/84447] [8 Regression] ICE with inherited deleted constructor and default argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447 Jason Merrill changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #4 from Jason Merrill --- Fixed.
[Bug c++/84447] [8 Regression] ICE with inherited deleted constructor and default argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447 --- Comment #3 from Jason Merrill --- Author: jason Date: Mon Feb 26 17:06:07 2018 New Revision: 258003 URL: https://gcc.gnu.org/viewcvs?rev=258003&root=gcc&view=rev Log: PR c++/84447 - ICE with deleted inherited ctor with default arg. * call.c (build_over_call): Handle deleted functions in one place. Added: trunk/gcc/testsuite/g++.dg/cpp0x/inh-ctor31.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/call.c
[Bug c++/84447] [8 Regression] ICE with inherited deleted constructor and default argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447 Jason Merrill changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org
[Bug c++/84447] [8 Regression] ICE with inherited deleted constructor and default argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447 --- Comment #2 from Jakub Jelinek --- My understanding is that this is because cand->fn in this case (the B ctor) is not DECL_DELETED_FN, but strip_inheriting_ctors (cand->fn) is, we somehow haven't tried to instantiate it (bailed early) and when we get into convert_default_arg, we try it with the non-instantiated A(T, T = 0) rather than with A(T, T = 0) [with T = int]. Returning error_mark_node from convert_default_arg in that case doesn't work though, because the bug is not diagnosed at all.
[Bug c++/84447] [8 Regression] ICE with inherited deleted constructor and default argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447 Jakub Jelinek changed: What|Removed |Added Priority|P3 |P1
[Bug c++/84447] [8 Regression] ICE with inherited deleted constructor and default argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org, ||jason at gcc dot gnu.org Target Milestone|--- |8.0
[Bug c++/84447] [8 Regression] ICE with inherited deleted constructor and default argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447 Martin Sebor changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2018-02-18 CC||msebor at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Martin Sebor --- Confirmed. Bisected to r251422 (gcc 8.0.0): r251422 | jason | 2017-08-29 15:40:08 -0400 (Tue, 29 Aug 2017) | 10 lines Instantiate default arguments/member initializers once. Prior to that GCC errors out with: t.C:11:6: error: use of deleted function ‘B::B(T, T) [with T = int][inherited from A]’ B b(0); ^ t.C:8:12: note: ‘B::B(T, T) [with T = int][inherited from A]’ is implicitly deleted because the default definition would be ill-formed: using A::A; ^ t.C:8:12: error: use of deleted function ‘A::A(T, T) [with T = int]’ t.C:3:24: note: declared here template A(T, T = 0) = delete; ^