Commit f41349a3 by Jason Merrill Committed by Jason Merrill

re PR c++/45418 ([C++0x] can't initialize array of non-trivial type with brace-init)

	PR c++/45418
	* init.c (perform_member_init): Handle list-initialization
	of array of non-trivial class type.

From-SVN: r174204
parent c844b3a0
2011-05-25 Jason Merrill <jason@redhat.com>
PR c++/45418
* init.c (perform_member_init): Handle list-initialization
of array of non-trivial class type.
PR c++/45080
* pt.c (instantiate_class_template_1): Call maybe_add_lambda_conv_op.
* semantics.c (lambda_function): Check COMPLETE_OR_OPEN_TYPE_P.
......
......@@ -549,6 +549,8 @@ perform_member_init (tree member, tree init)
{
gcc_assert (TREE_CHAIN (init) == NULL_TREE);
init = TREE_VALUE (init);
if (BRACE_ENCLOSED_INITIALIZER_P (init))
init = digest_init (type, init, tf_warning_or_error);
}
if (init == NULL_TREE
|| same_type_ignoring_top_level_qualifiers_p (type,
......
2011-05-25 Jason Merrill <jason@redhat.com>
* g++.dg/cpp0x/initlist50.C: New.
* g++.dg/cpp0x/lambda/lambda-conv5.C: New.
* g++.dg/cpp0x/variadic109.C: New.
......
// PR c++/45418
// { dg-options -std=c++0x }
struct A1 { };
struct A2 {
A2();
};
template <class T> struct B {
T ar[1];
B(T t):ar({t}) {}
};
int main(){
B<int> bi{1};
A1 a1;
B<A1> ba1{a1};
A2 a2;
A2 a2r[1]{{a2}};
B<A2> ba2{a2};
}
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