cor3ntin added inline comments.
================
Comment at: clang/lib/Parse/ParseExprCXX.cpp:700
+
+ if (Tok.is(tok::identifier) && NextToken().is(tok::r_paren)) {
+ SourceLocation TemplateKWLoc;
----------------
aaron.ballman wrote:
> cor3ntin wrote:
> > aaron.ballman wrote:
> > > cor3ntin wrote:
> > > > aaron.ballman wrote:
> > > > > This feels surprisingly restrictive to me, but it's sufficient for
> > > > > getting libstdc++ working again.
> > > > I've can't think of another kind of unqualified-id that could refer to
> > > > a capturable entity here.
> > > > Do you know what would be missing?
> > > > Also, without being very restrictive, I'm not sure how this is
> > > > implementable
> > > What I find restrictive is that it requires an unqualified-id *only* to
> > > kick in as being maybe mutable agnostic. e.g., `decltype(id)` and
> > > `decltype(+id)` (where the unary + may be an overloaded operator that
> > > depends on the mutability of the `this` object).
> > >
> > > (I'm not seeing the principle that guides this restriction proposed in
> > > the core issue yet, but those can be hashed out later.)
> > I do not think there is a general answer to "given these captures and this
> > arbitrarily complex expression", would the mutability of the lambda affect
> > the declaration of the parameters.
> > In this case we know it doesn't and that happen to fix existing code,
> > which make the solution tractable.
> > If core was keen to add any more complexity here, I think they should
> > consider mandating a look-ahead of the `mutable` keyword even if that
> > sounds rather complex. I don't think it will come to that, the proposed
> > resolution will be good enough to reduce the blast radius of the paper, and
> > I don't see a strong motivation to add even more complexity here.
> Eh, I'm less convinced. The changes in P2036R3 were a band-aid to fix
> mistakes. The core issue "fixing" it is another band-aid over the top of
> P2036R3. My experience is that band-aids over band-aids rarely leads to a
> good feature that users can make sense of. The fact that I can't make heads
> or tails of what the actual language design rule is here also means this is
> painful for us supporting our own extensions (like `alignof` on an object
> instead of a type, `__typeof__` instead of `decltype`, etc).
>
> Personally, I'd prefer the core issue was resolved in a more clean fashion
> than carving out a few exceptions under the hope that it's "good enough".
> However, that's something for us to fight about in Core when this comes up.
> For the moment, I'm happy enough with this because it gets libstdc++ unstuck.
> The changes in P2036R3 were a band-aid to fix mistakes. The core issue
> "fixing" it is another band-aid over the top of P2036R3.
Agreed, but, the question is how many people will run into scenario not covered
by the band-aid in existing code?
And this is why I'm not a fan of generalizing to `sizeof`/`noexcept` because
it' sounds arbitrary and unmotivated, and if we have more than one bandaid we
should consider a general solution.
Basically either that or `mutable` look-ahead, i don't see an in-between
solution as being viable.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D123909/new/
https://reviews.llvm.org/D123909
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits