From 3d23f78852b9405585fa33070a9f06aa32f21de3 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Thu, 9 Feb 2012 02:12:34 +0000 Subject: When we create a non-static data member in the closure object for a capture, make sure we actually add the field. llvm-svn: 150135 --- clang/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'clang/test/CXX/expr/expr.prim') 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 4c876d7480d..10d1e927bfe 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 @@ -29,3 +29,20 @@ void capture_with_default_args(CopyCtorDefault cct) { } // FIXME: arrays! + +// Check for the expected non-static data members. + +struct ExpectedLayout { + char a; + short b; +}; + +template void capture(const T&); + +void test_layout(char a, short b) { + auto x = [=] () -> void { // expected-error{{lambda expressions are not supported yet}} + capture(a); + capture(b); + }; + static_assert(sizeof(x) == sizeof(ExpectedLayout), "Layout mismatch!"); +} -- cgit v1.2.3