This is similar to PR/37860, but for array forms. #include <initializer_list>
struct standard_layout_base { int i; standard_layout_base() = default; ~standard_layout_base() = default; standard_layout_base& operator=(const standard_layout_base&) = delete; standard_layout_base(const standard_layout_base&) = delete; standard_layout_base(int __a): i(__a) { } standard_layout_base(std::initializer_list<int> __a) : i(*__a.begin()) { } }; int main() { typedef standard_layout_base test_type; // copy list initialization test_type t1 = { 1 }; // copy list initialization, array test_type t21[4] = { 1, 2, 3, 4 }; // copy list initialization smaller than size of array, array test_type t22[4] = { 1, 2, 3 }; } -- Summary: standard_layout: array direct and copy initialization issues Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bkoz at gcc dot gnu dot org BugsThisDependsOn: 37860 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37896