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