[PATCH] Implement transformations of non-capturing nested lambdas.

Doug Gregor dgregor at apple.com
Tue Oct 22 09:53:26 PDT 2013

  Just the one comment about transforming template parameter lists, but otherwise this LGTM.

Comment at: lib/Sema/SemaTemplateInstantiate.cpp:933
@@ +932,3 @@
+      //  - In the generic lambda case, we set the NewTemplate to be considered
+      //    an "instantiation" of the OldTemplate.
+      // See the documentation and use of get/setInstantiationOfMemberFunction
I love comments, but I don't think a complete discussion of how primary templates and specializations are wired together is necessary here. This last bullet is the important part for what we're doing here.

Comment at: lib/Sema/TreeTransform.h:8299
@@ +8298,3 @@
+  if (OrigTPL) 
+    NewTPL = getDerived().TransformTemplateParameterList(OrigTPL);
+  LSI->GLTemplateParameterList = NewTPL;
Don't we need to check whether NewTPL null after this, in case the transformation of the template parameter list failed?

Comment at: lib/Sema/TreeTransform.h:8346
@@ +8345,3 @@
+      // template is specialized and the entire lambda expression has to be
+      // transformed. Without this FindInstantiatedDecl causes an assertion.
+      // template<class T> void foo(T t) {
Please remove the last sentence; we should describe why something is correct to do, not which bug we're avoiding.


More information about the cfe-commits mailing list