zwuis wrote:

> This is not the right fix. ~~This initializer should not be 
> value-dependent.~~ If you change a part of reproducer to
> 
> ```cpp
> template <auto>
> struct MetaValuesHelper;
> 
> template <typename TupleName, TupleName* kValues>
> struct MetaValuesHelper<kValues> {
> ```
> 
> , the code becomes valid but Clang still crashes.
> 
> Update: Not sure if `assert(!Init->isValueDependent());` is correct. But if 
> you see the AST via `-Xclang -ast-dump`, the initializer is 
> `CXXUnresolvedConstructExpr`, which seemed incorrect.

I just find that I missed something. This changes only makes partial 
specialization part valid. The whole program is still invalid  because we use 
an unknown `stdget`. And there is still a `CXXUnresolvedConstructExpr`.

It would be better to resolve this case, so the original issue will be fixed 
simultaneously. Marking the declaration invalid hides the underlying issue, and 
worsen error recovery.

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

Reply via email to