================
@@ -8504,10 +8504,17 @@ Sema::CheckTemplateDeclScope(Scope *S, 
TemplateParameterList *TemplateParams) {
     if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(Ctx)) {
       // C++ [temp.mem]p2:
       //   A local class shall not have member templates.
-      if (RD->isLocalClass())
+
+      // RD->isLocalClass() fails under OpenMP captured regions; trace outer
+      // context to bypass CapturedDecl.
+      const DeclContext *OutCtx = RD->getDeclContext();
+      while (isa_and_nonnull<CapturedDecl>(OutCtx))
+        OutCtx = OutCtx->getParent();
+
+      if (RD->isLocalClass() || (OutCtx && OutCtx->isFunctionOrMethod()))
----------------
alexey-bataev wrote:

```suggestion
      if (OutCtx && OutCtx->isFunctionOrMethod())
```

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

Reply via email to