ojhunt wrote:

> Yeah this is not correct, simply removing that return statement will cause us 
> to attempt to use a discarded return statement for return type deduction 
> purposes, but that is not supposed to happen.

Ah yeah, I had misunderstood (again) the rules for when otherwise discarded 
statements have relevant semantics, so I thought this was a case where it would 
interact with deduction (this is why it's a draft :D)

What is weird to me is that the behavior seems to be producing a `void` type, 
but given the existence of some _incorrect_ deduction path I can't see where 
void is coming from: the "obvious" return type of the lambda is a boolean, the 
undeduced return type is the auto type or other undeduced stand in - so I'd 
understand an error about a dependent or undeduced return, but the void seems 
surprising?

For lamdas that have an implicit (rather than deduced, though I would have 
assumed those were the same from a non-C++ world :D ), there's logic to track 
the return statements and I think it resolves to void if that list is empty. It 
seems plausible there's a path that acts similarly for auto returns.



https://github.com/llvm/llvm-project/pull/153921
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to