wx257osn2 wrote:

Sorry for the late reply.

> Did your https://github.com/llvm/llvm-project/pull/200850 handle this issue?

I checked, but it still seems to be failing.

---

I've been thinking about this for a while and reworked the implementation: 
instead of skipping `CheckTemplateArgument` entirely, the new version still 
applies the conversions to the parameter type 
(`BuildConvertedConstantExpression`) and only skips the constant evaluation 
(`EvaluateConvertedConstantExpression`), taking the same early-return path as a 
value-dependent argument.
The evaluation is the only part that can spuriously fail in unevaluated 
contexts, and its result is not needed there.

Since the conversions are still applied, the type, value category, and any 
potentially-throwing conversion nodes of the replacement are preserved, so the 
`sizeof`/`typeid`/`noexcept` cases you mentioned should behave as before.

I would appreciate your feedback on this implementation.

https://github.com/llvm/llvm-project/pull/196791
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to