diff options
author | Douglas Gregor <dgregor@apple.com> | 2012-02-09 02:45:47 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2012-02-09 02:45:47 +0000 |
commit | 18fe084d72392a5ceaa1fab7d3f3f0d0f2538069 (patch) | |
tree | 978b9bb31cb6e413aa4c372d3dcce1ab0051a88f /test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp | |
parent | 4bbb8501d9db2ae72b1e39afaafa5795d67ffe03 (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.cpp | 17 |
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); |