Commit d3de8016 by Jason Merrill Committed by Jason Merrill

re PR c++/47453 ([DR 1214] Various non-conforming behaviors with braced-init-list initialization)

	PR c++/47453
	* typeck.c (build_x_compound_expr_from_list): Also complain
	about ({...}).

From-SVN: r177480
parent 9127e994
2011-08-05 Jason Merrill <jason@redhat.com>
PR c++/47453
* typeck.c (build_x_compound_expr_from_list): Also complain
about ({...}).
PR c++/49812
* typeck.c (cp_build_unary_op) [POSTINCREMENT_EXPR]: Strip cv-quals.
......
......@@ -5470,6 +5470,16 @@ build_x_compound_expr_from_list (tree list, expr_list_kind exp,
{
tree expr = TREE_VALUE (list);
if (BRACE_ENCLOSED_INITIALIZER_P (expr)
&& !CONSTRUCTOR_IS_DIRECT_INIT (expr))
{
if (complain & tf_error)
pedwarn (EXPR_LOC_OR_HERE (expr), 0, "list-initializer for "
"non-class type must not be parenthesized");
else
return error_mark_node;
}
if (TREE_CHAIN (list))
{
if (complain & tf_error)
......
2011-08-05 Jason Merrill <jason@redhat.com>
PR c++/47453
* g++.dg/cpp0x/initlist56.C: New.
PR c++/49812
* g++.dg/overload/rvalue2.C: New.
......
......@@ -4,5 +4,5 @@
#include <complex>
__complex__ int i ({0});
std::complex<int> i2 ({0});
__complex__ int i {0};
std::complex<int> i2 {0};
......@@ -8,7 +8,7 @@ struct A2 {
template <class T> struct B {
T ar[1];
B(T t):ar({t}) {}
B(T t):ar{t} {}
};
int main(){
......
// PR c++/47453
// { dg-options "-std=c++0x -pedantic-errors" }
// invalid
int a({0}); // { dg-error "" }
// invalid
int const &b({0}); // { dg-error "" }
// invalid
struct A1 { int a[2]; A1(); };
A1::A1():a({1, 2}) { } // { dg-error "" }
struct A { explicit A(int, int); A(int, long); };
// invalid
A c({1, 2}); // { dg-error "" }
// valid (by copy constructor).
A d({1, 2L});
// valid
A e{1, 2};
#include <initializer_list>
struct B {
template<typename ...T>
B(std::initializer_list<int>, T ...);
};
// invalid (the first phase only considers init-list ctors)
// (for the second phase, no constructor is viable)
B f{1, 2, 3}; // { dg-error "" }
// valid (T deduced to <>).
B g({1, 2, 3});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment