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