[PATCH] [C++11] Support for capturing of variable length arrays in lambda expression.

Richard Smith richard at metafoo.co.uk
Mon Jul 21 21:57:54 PDT 2014


On Mon, Jul 21, 2014 at 5:43 AM, Alexey Bataev <a.bataev at hotmail.com> wrote:

> Updated version after last review. Unfortunately, I don't think it is
> possible to pass captured expression as a VariableLengthArray *. I have to
> capture expr of VariableLengthArray * and then cast it to
> SizeExpr->getType() type to make lambda capture this type, not
> VariableLengthArray *. I have to pass actual value of SizeExpr to the
> Lambda in this field, because it is defined only in calling function and in
> Lambda it can be received only in one of captured fields.


I don't understand what you're saying. What I'm suggesting is storing the
VariableLengthArray* in the InitializerOrBitWidth field on FieldDecl,
instead of storing the array bound there.


> http://reviews.llvm.org/D4368
>
> Files:
>   include/clang/AST/Decl.h
>   include/clang/AST/LambdaCapture.h
>   include/clang/Basic/DiagnosticSemaKinds.td
>   lib/AST/Decl.cpp
>   lib/AST/Expr.cpp
>   lib/AST/ExprCXX.cpp
>   lib/AST/StmtPrinter.cpp
>   lib/AST/StmtProfile.cpp
>   lib/CodeGen/CGDebugInfo.cpp
>   lib/CodeGen/CGExprCXX.cpp
>   lib/CodeGen/CodeGenFunction.cpp
>   lib/Sema/SemaDecl.cpp
>   lib/Sema/SemaExpr.cpp
>   lib/Sema/TreeTransform.h
>   test/CodeGenCXX/instantiate-typeof-vla.cpp
>   test/SemaTemplate/instantiate-typeof.cpp
>   tools/libclang/IndexBody.cpp
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140721/4a688d5f/attachment.html>


More information about the cfe-commits mailing list