[cfe-dev] c++ question: can lambda be used in VLA?

Hal Finkel via cfe-dev cfe-dev at lists.llvm.org
Wed May 25 16:41:35 PDT 2016


----- Original Message -----

> From: "James Dennett via cfe-dev" <cfe-dev at lists.llvm.org>
> To: "Akira Hatanaka" <ahatanak at gmail.com>
> Cc: "Richard Smith" <richard at metafoo.co.uk>, "Clang Dev"
> <cfe-dev at lists.llvm.org>
> Sent: Wednesday, May 25, 2016 6:37:46 PM
> Subject: Re: [cfe-dev] c++ question: can lambda be used in VLA?

> On Wed, May 25, 2016 at 4:19 PM, Akira Hatanaka < ahatanak at gmail.com
> > wrote:

> > On Tue, May 24, 2016 at 7:11 PM, James Dennett <
> > james.dennett at gmail.com > wrote:
> 

> > > On Tue, May 24, 2016 at 6:25 PM, Akira Hatanaka via cfe-dev <
> > > cfe-dev at lists.llvm.org > wrote:
> > 
> 

> > > > I wasn't requesting that clang accept lambda expressions used
> > > > for
> > > > array bounds but was asking whether it was valid in c++. Is
> > > > this
> > > > something that is open to interpretation because it's not
> > > > covered
> > > > by
> > > > the standard?
> > > 
> > 
> 

> > > > FYI, this isn't something that I made up. It was in a code a
> > > > user
> > > > wrote.
> > > 
> > 
> 

> > > It's covered by the standard, and as Clang's error message says,
> > > lambdas are not allowed in constant expressions in C++11 or
> > > C++14.
> > 
> 

> > Yes, the c++ standard gives a list of subexpressions that are not
> > allowed in constant expressions and lambda expression is one of
> > them.
> 

> > This doesn't seem to apply to C99's extension for variable length
> > arrays because array sizes are not required to be constant
> > expressions.
> 

> I was replying to you saying that you were "asking whether it was
> valid in C++", and whether "it's not covered by the standard".

> C99 doesn't have lambdas, so it doesn't allow this. C++ doesn't have
> VLAs, so it doesn't allow it.

> The de facto language accepted by Clang doesn't accept it, as you
> already noted.

> There's no specification that tells us what the "right thing to do"
> is here. We could extend Clang to support this non-standard
> combination of C99 with C++11, and it might even make it a little
> more consistent, but if it adds any implementation complexity then
> it may not be worthwhile to support a corner case that's not allowed
> by any language standard.
What did the most recent wording for C++ ARBs say about this issue? 

-Hal 

> -- James
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

-- 

Hal Finkel 
Assistant Computational Scientist 
Leadership Computing Facility 
Argonne National Laboratory 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160525/e8499ba0/attachment.html>


More information about the cfe-dev mailing list