diff options
author | Jason Merrill <jason@gcc.gnu.org> | 2008-12-04 14:00:03 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2008-12-04 14:00:03 -0500 |
commit | f782c65c3da796b4eb907daa55a160f1203ee5e6 (patch) | |
tree | 175fb67e45c27c46f67a8bee4a79a8b083beec40 /gcc/cp/decl.c | |
parent | 1d9aba81050b524d9dd61e59f4b28382782051b3 (diff) | |
download | gcc-f782c65c3da796b4eb907daa55a160f1203ee5e6.zip gcc-f782c65c3da796b4eb907daa55a160f1203ee5e6.tar.gz gcc-f782c65c3da796b4eb907daa55a160f1203ee5e6.tar.bz2 |
re PR c++/37906 (has_trivial_default_constructor vs. deleted copy ctor)
PR c++/37906
* decl.c (grok_special_member_properties): Set TYPE_HAS_COMPLEX_DFLT
here.
* class.c (check_bases_and_members): Rather than assuming any
user-declared default constructor is complex here.
From-SVN: r142442
Diffstat (limited to 'gcc/cp/decl.c')
-rw-r--r-- | gcc/cp/decl.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index f2e12b3..70ccd32 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -9842,7 +9842,11 @@ grok_special_member_properties (tree decl) TYPE_HAS_CONST_INIT_REF (class_type) = 1; } else if (sufficient_parms_p (FUNCTION_FIRST_USER_PARMTYPE (decl))) - TYPE_HAS_DEFAULT_CONSTRUCTOR (class_type) = 1; + { + TYPE_HAS_DEFAULT_CONSTRUCTOR (class_type) = 1; + if (TREE_CODE (decl) == TEMPLATE_DECL || !DECL_DEFAULTED_FN (decl)) + TYPE_HAS_COMPLEX_DFLT (class_type) = 1; + } else if (is_list_ctor (decl)) TYPE_HAS_LIST_CTOR (class_type) = 1; } |