alexfh added a comment. In D128113#3744353 <https://reviews.llvm.org/D128113#3744353>, @mizvekov wrote:
> In D128113#3744315 <https://reviews.llvm.org/D128113#3744315>, @alexfh wrote: > >> The whole project seems like a great improvement in clang diagnostics, but I >> don't yet see how template parameter pack substitution indices fit into the >> whole picture. If different type parameters in a parameter pack differ only >> by some other type of suraring, would they be distinguishable in the current >> state? How do substitution indices affect this? > > We need the pack index just as much as the index. > > When we are resugaring some type and we find a SubstTemplateParmType, first > we try to find a template specialization in the current naming context (ie a > nested name specifier) which refers to the same template as the Subst node. > > Then we have to rebuild that Subst node using, as the new underlying type, > the template argument which appears in the template specialization we found. > To find that argument, first we use the index, which already was available in > the AST prior to this patch. But in case that index refers to an argument > pack, then we need the pack index to be able to find the argument inside that. I more or less understand the general direction, but it would be interesting to look at the specific code that uses this. The main questions we need to answer here are: 1. is the cost of storing parameter pack substitution indices while building AST worth the benefits? 2. is there an alternative solution that would shift the cost to the moment when this information is about to be used (when formatting diagnostic, I suppose)? 3. is there a good way to make this cost optional (using a flag or somehow else)? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D128113/new/ https://reviews.llvm.org/D128113 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits