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

            Bug ID: 62310
           Summary: fails to consider default initializers (NSDMIs) when
                    checking inheriting constructors
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: richard-gccbugzilla at metafoo dot co.uk

Consider:

struct A { A(int); A() = delete; };
struct B { B(int); B() = delete; };
struct C : B { using B::B; A a = 0; } c(0);

GCC rejects this valid code:

<stdin>:1:114: error: use of deleted function ‘C::C(int)’
<stdin>:1:97: note: ‘C::C(int)’ is implicitly deleted because the default
definition would be ill-formed:
<stdin>:1:97: error: use of deleted function ‘A::A()’
<stdin>:1:20: note: declared here

However, if you remove the '= delete' from A, GCC does in fact call A::A(int),
so this seems to be limited to determining if the inheriting constructor should
be deleted.

Reply via email to