https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80829
Bug ID: 80829 Summary: Use of constexpr constructors with base type instantiation fails compilation Product: gcc Version: 7.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: aaron.wood at verizon dot com Target Milestone: --- Created attachment 41389 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41389&action=edit Small reproducer GCC 7.1 fails to compile programs where a type extends another type, both types have constexpr constructors, and instantiating is done like so: constexpr A a = B(10); This produces: error: 'B(10).B::<anonymous>' is not a constant expression because it refers to an incompletely initialized variable constexpr A a = B(10); The fix/workaround is to not use the base type: constexpr B b = B(10); I've attached a small program that shows the A and B types I'm using here and easily reproduces this issue on 7.1.