diff options
| author | Douglas Gregor <dgregor@apple.com> | 2012-02-15 22:08:38 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2012-02-15 22:08:38 +0000 |
| commit | 33e863cfc87105ea15c0d5f7c94380a553d84be7 (patch) | |
| tree | fa3246d83d4dd7c32207f1245a55166a34439799 /clang/test/CXX/expr/expr.prim/expr.prim.lambda | |
| parent | 690a1fb0455a09bc6f47da6df4a0e48b23ebee61 (diff) | |
| download | bcm5719-llvm-33e863cfc87105ea15c0d5f7c94380a553d84be7.tar.gz bcm5719-llvm-33e863cfc87105ea15c0d5f7c94380a553d84be7.zip | |
Lambda closure types have a conversion function to a block pointer
with the same parameter types and return type as the function call
operator. This is the real answer to
http://stackoverflow.com/questions/4148242/is-it-possible-to-convert-a-c0x-lambda-to-a-clang-block
:)
llvm-svn: 150620
Diffstat (limited to 'clang/test/CXX/expr/expr.prim/expr.prim.lambda')
| -rw-r--r-- | clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks.cpp b/clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks.cpp index ba2b70e4c3d..0806828c83e 100644 --- a/clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks.cpp +++ b/clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks.cpp @@ -6,3 +6,10 @@ void block_capture_errors() { (void)[=] { var = 17; }; // expected-error{{__block variable 'var' cannot be captured in a lambda}} } + +void conversion_to_block(int captured) { + int (^b1)(int) = [=](int x) { return x + captured; }; + + const auto lambda = [=](int x) { return x + captured; }; + int (^b2)(int) = lambda; +} |

