https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92878

--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Author: mpolacek
Date: Wed Dec 11 18:40:55 2019
New Revision: 279240

URL: https://gcc.gnu.org/viewcvs?rev=279240&root=gcc&view=rev
Log:
        PR c++/92878 - Parenthesized init of aggregates in new-expression.

Ville pointed out that our paren init of aggregates doesn't work for

  auto a = new A(1, 2, 3);

and I think it should:

A new-expression that creates an object of type T initializes that object
as follows:
...
-- Otherwise, the new-initializer is interpreted according to the
   initialization rules of [dcl.init] for direct-initialization.

so I think it follows that we should perform dcl.init#17.6.2.2.

This doesn't work with new[]; we have:
  error ("parenthesized initializer in array new");

        * init.c (build_new_1): Handle parenthesized initialization of
        aggregates in new-expression.

        * g++.dg/cpp2a/paren-init20.C: New test.

Added:
    trunk/gcc/testsuite/g++.dg/cpp2a/paren-init20.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/init.c
    trunk/gcc/testsuite/ChangeLog

Reply via email to