================
@@ -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