From: Jason Merrill Date: Thu, 31 Oct 2013 14:41:55 +0000 (-0400) Subject: re PR c++/58162 ([C++11] bogus error: use of deleted function 'constexpr A::A(const... X-Git-Tag: releases/gcc-4.9.0~3107 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1c79ebd52214a424949c5a242ee440f211bc9566;p=thirdparty%2Fgcc.git re PR c++/58162 ([C++11] bogus error: use of deleted function 'constexpr A::A(const A&)') PR c++/58162 * parser.c (cp_parser_late_parse_one_default_arg): Set TARGET_EXPR_DIRECT_INIT_P. From-SVN: r204263 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a0d802f1c377..34101530cf95 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2013-10-31 Jason Merrill + PR c++/58162 + * parser.c (cp_parser_late_parse_one_default_arg): Set + TARGET_EXPR_DIRECT_INIT_P. + * class.c (type_build_ctor_call): Return early in C++98 mode. (type_build_dtor_call): Likewise. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 9e28cedd0e75..bbc8e751a873 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -23212,6 +23212,9 @@ cp_parser_late_parse_one_default_arg (cp_parser *parser, tree decl, && CONSTRUCTOR_IS_DIRECT_INIT (parsed_arg)) flags = LOOKUP_NORMAL; parsed_arg = digest_init_flags (TREE_TYPE (decl), parsed_arg, flags); + if (TREE_CODE (parsed_arg) == TARGET_EXPR) + /* This represents the whole initialization. */ + TARGET_EXPR_DIRECT_INIT_P (parsed_arg) = true; } } diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi9.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi9.C new file mode 100644 index 000000000000..febe0ecac463 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/nsdmi9.C @@ -0,0 +1,13 @@ +// PR c++/58162 +// { dg-require-effective-target c++11 } + +struct A { + A(); + A(A&&); +}; + +struct B { + A const a = A(); +}; + +B b;