diff options
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.cpp | 17 |
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); |