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

Reply via email to