summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-10-18 00:44:17 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-10-18 00:44:17 +0000
commitfb26652c43074c6be6dab71174a9f1ff2f30fa2f (patch)
tree19fd36bf2d943c1c14868dbf76a6a8e8d2d70dea /clang
parent5e2ec486bbd3f8432ecdab2a20dc402dd6c36845 (diff)
downloadbcm5719-llvm-fb26652c43074c6be6dab71174a9f1ff2f30fa2f.tar.gz
bcm5719-llvm-fb26652c43074c6be6dab71174a9f1ff2f30fa2f.zip
Tests for DR1507.
llvm-svn: 166162
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Sema/SemaInit.cpp3
-rw-r--r--clang/test/CXX/dcl.decl/dcl.init/p7.cpp14
2 files changed, 16 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp
index 7f3d7ab3599..ec25d531136 100644
--- a/clang/lib/Sema/SemaInit.cpp
+++ b/clang/lib/Sema/SemaInit.cpp
@@ -3611,7 +3611,8 @@ static void TryValueInitialization(Sema &S,
// user-provided or deleted default constructor, then the object is
// zero-initialized and, if T has a non-trivial default constructor,
// default-initialized;
- // The 'non-union' here was removed by DR1502.
+ // The 'non-union' here was removed by DR1502. The 'non-trivial default
+ // constructor' part was removed by DR1507.
if (NeedZeroInitialization)
Sequence.AddZeroInitializationStep(Entity.getType());
diff --git a/clang/test/CXX/dcl.decl/dcl.init/p7.cpp b/clang/test/CXX/dcl.decl/dcl.init/p7.cpp
new file mode 100644
index 00000000000..03216f4c28a
--- /dev/null
+++ b/clang/test/CXX/dcl.decl/dcl.init/p7.cpp
@@ -0,0 +1,14 @@
+// RUN: %clang_cc1 -std=c++11 -verify %s
+
+struct NotAggregateBase {};
+
+struct A : NotAggregateBase {
+private:
+ A() = default; // expected-note {{here}}
+};
+A a = {}; // expected-error {{calling a private constructor}}
+
+struct B : NotAggregateBase {
+ explicit B() = default; // expected-note {{here}}
+};
+B b = {}; // expected-error {{chosen constructor is explicit}}
OpenPOWER on IntegriCloud