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
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to