summaryrefslogtreecommitdiffstats
path: root/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2012-02-09 02:45:47 +0000
committerDouglas Gregor <dgregor@apple.com>2012-02-09 02:45:47 +0000
commit199cec767377a4dc945e79162b2d71489afa7a00 (patch)
tree6d5dd4de2f6ca22f6be97ee4e6a486ca3a6a11ec /clang/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp
parent6f40eb7e56e0bcba39437537a25be9b1df1dffc2 (diff)
downloadbcm5719-llvm-199cec767377a4dc945e79162b2d71489afa7a00.tar.gz
bcm5719-llvm-199cec767377a4dc945e79162b2d71489afa7a00.zip
Implement capture-by-copy for arrays in lambdas.
llvm-svn: 150138
Diffstat (limited to 'clang/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp')
-rw-r--r--clang/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp b/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp
index 10d1e927bfe..2dcaa5ddf63 100644
--- a/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp
+++ b/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp
@@ -1,5 +1,7 @@
// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
+template<typename T> void capture(const T&);
+
class NonCopyable {
NonCopyable(const NonCopyable&); // expected-note 2 {{implicitly declared private here}}
};
@@ -19,6 +21,7 @@ struct NonTrivial {
};
struct CopyCtorDefault {
+ CopyCtorDefault();
CopyCtorDefault(const CopyCtorDefault&, NonTrivial nt = NonTrivial());
void foo() const;
@@ -28,7 +31,17 @@ void capture_with_default_args(CopyCtorDefault cct) {
(void)[=] () -> void { cct.foo(); }; // expected-error{{lambda expressions are not supported yet}}
}
-// FIXME: arrays!
+struct ExpectedArrayLayout {
+ CopyCtorDefault array[3];
+};
+
+void capture_array() {
+ CopyCtorDefault array[3];
+ auto x = [=]() -> void { // expected-error{{lambda expressions are not supported yet}}
+ capture(array[0]);
+ };
+ static_assert(sizeof(x) == sizeof(ExpectedArrayLayout), "layout mismatch");
+}
// Check for the expected non-static data members.
@@ -37,8 +50,6 @@ struct ExpectedLayout {
short b;
};
-template<typename T> void capture(const T&);
-
void test_layout(char a, short b) {
auto x = [=] () -> void { // expected-error{{lambda expressions are not supported yet}}
capture(a);
OpenPOWER on IntegriCloud