diff options
author | Sean Hunt <scshunt@csclub.uwaterloo.ca> | 2011-05-12 03:51:48 +0000 |
---|---|---|
committer | Sean Hunt <scshunt@csclub.uwaterloo.ca> | 2011-05-12 03:51:48 +0000 |
commit | ca46d131aa40ae953d719b096cb951b385787445 (patch) | |
tree | 539ccbe94629c0f5bc7d33939b74d2e866a323a3 /lib/Sema/SemaDeclCXX.cpp | |
parent | 8a29bc047a374df2464869b55581c24def68c2ec (diff) |
Implement deletion of explicitly defaulted default constructors.
We still don't parse out-of-line defaults correctly, which is needed to
get the full effect out of this patch.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131223 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDeclCXX.cpp')
-rw-r--r-- | lib/Sema/SemaDeclCXX.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index b00d73d93c..8ef3463f42 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -3057,6 +3057,14 @@ void Sema::CheckExplicitlyDefaultedDefaultConstructor(CXXConstructorDecl *CD) { // We know there are no parameters. CD->setType(Context.getFunctionType(Context.VoidTy, 0, 0, EPI)); } + + if (ShouldDeleteDefaultConstructor(CD)) { + if (First) + CD->setDeletedAsWritten(); + else + Diag(CD->getLocation(), diag::err_out_of_line_default_deletes) + << getSpecialMember(CD); + } } bool Sema::ShouldDeleteDefaultConstructor(CXXConstructorDecl *CD) { |