zyn0217 wrote:

> So this expression has been transformed twice, first when checking the 
> template arguments for the concept/template specialization, and then in the 
> second time for the SubstNonTypeTemplateParmExpr transform.
> 
> Why does it fail the second time but not the first? Supposedly the first time 
> around it was also an Unevaluated context. Have we messed up the contexts 
> somehow?

AFAIK the first transform happens in the parameter building where all of the 
template arguments are dependent. Therefore it doesn't fail.

The underlying issue is that, whether we want to allow users to instantiate 
templates from a decltype expression; technically we shouldn't but before our 
normalization patch it was accidently allowed (we instantiated the constexpr 
functions before substituting into decltypes whereas we normalize decltype 
first and then substitute now) and mpunits seems to rely on that behavior.

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