aboutsummaryrefslogtreecommitdiff
path: root/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
commit18fe084d72392a5ceaa1fab7d3f3f0d0f2538069 (patch)
tree978b9bb31cb6e413aa4c372d3dcce1ab0051a88f /test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp
parent4bbb8501d9db2ae72b1e39afaafa5795d67ffe03 (diff)
Implement capture-by-copy for arrays in lambdas.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150138 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp')
-rw-r--r--test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp b/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp
index 10d1e927bf..2dcaa5ddf6 100644
--- a/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp
+++ b/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);