The following invalid code snippets are accepted on mainline:

========================
struct A
{
  A(...) = default;
};
========================

========================
struct A
{
  A(const A&, ...) = default;
};
========================

Apparently defaultable_fn_p in cp/class.c doesn't handle the ellipsis
correctly. This makes me wonder whether type_has_user_nondefault_constructor
which contains similar code has the same problem.


This bug can be exploited to trigger an ICE:

========================
struct A
{
  A(...) = default;
  A(const A&);
};

void foo()
{
  A a;
}
========================

bug.cc: In constructor 'A::A(...)':
bug.cc:3: internal compiler error: Segmentation fault
Please submit a full bug report, [etc.]

This makes the bug a regression as the second code snippet didn't crash
previous compilers.


-- 
           Summary: [4.4 regression] Trouble with defaulted constructors
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Keywords: ice-on-invalid-code, accepts-invalid, monitored
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: reichelt at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38649

Reply via email to