ABataev added a comment. In https://reviews.llvm.org/D22955#598081, @rnk wrote:
> If I understand correctly, this patch takes template function patterns, > copies them into instantiated context, parses them in that context, and then > instantiates them in that context. The key difference is that today's > fdelayed-template-parsing doesn't parse the body of the function in the > instantiation context. It just allows access to names at global scope that > were encountered after the template pattern. > > So, if I run -ast-dump, do I end up seeing both the pattern and the fully > instantiated function with this patch? > > This patch removes a lot of warnings from our tests. We lose a lot of our > ability to diagnose MSVC-isms with this approach. I wonder if there's a > better way to do delayed template parsing the way we were before, but make > the template arguments available during lookup. In https://reviews.llvm.org/D22955#598081, @rnk wrote: > If I understand correctly, this patch takes template function patterns, > copies them into instantiated context, parses them in that context, and then > instantiates them in that context. The key difference is that today's > fdelayed-template-parsing doesn't parse the body of the function in the > instantiation context. It just allows access to names at global scope that > were encountered after the template pattern. Yes, you're right. > So, if I run -ast-dump, do I end up seeing both the pattern and the fully > instantiated function with this patch? No, you will see only instantiated function. > This patch removes a lot of warnings from our tests. We lose a lot of our > ability to diagnose MSVC-isms with this approach. I wonder if there's a > better way to do delayed template parsing the way we were before, but make > the template arguments available during lookup. Yes, this is the price we should pay for better MSVC compatibility. I tried several different solutions before ended up with this one and have to say this one is the best I was able to find. https://reviews.llvm.org/D22955 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits