From c58e945d1146bbe7778e5acc3d6079581cbcdc4b Mon Sep 17 00:00:00 2001 From: fabien Date: Wed, 11 May 2011 06:03:38 +0000 Subject: [PATCH] gcc/cp/ChangeLog: 2011-05-11 Fabien Chene PR c++/48859 * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the recursion if there is user defined constructor. gcc/testsuite/ChangeLog: 2011-05-11 Fabien Chene PR c++/48859 * g++.dg/init/pr48859.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173644 138bc75d-0d04-0410-961f-82ee72b054a4 index ff94b71..286bfb6 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -1904,6 +1904,9 @@ diagnose_uninitialized_cst_or_ref_member_1 (tree type, tree origin, field_type = strip_array_types (TREE_TYPE (field)); + if (type_has_user_provided_constructor (field_type)) + continue; + if (TREE_CODE (field_type) == REFERENCE_TYPE) { ++ error_count; new file mode 100644 index 0000000..8ef5c2e --- /dev/null +++ b/gcc/testsuite/g++.dg/init/pr48859.C @@ -0,0 +1,14 @@ +// PR c++/48859 +// { dg-do compile } + +struct HasConstructor { + HasConstructor() {} +}; + +class ConstMember { + const HasConstructor empty_; +}; + +void foo() { + new ConstMember; +} -- 1.7.0.4