TPPPP72 wrote:

Because this PR triggered a regrssion issue #195416 , I did some investigation.

So I don't think it is a correct fix.

For code
```cpp
template <typename T> int f(T) {
  struct A {
    static int B;
  };
  int A::B; 
}

int x = f(1);
```

The assertion still remain
```
repro.cpp:3:16: error: static data member 'B' not allowed in local struct 'A'
    3 |     static int B;
      |                ^
clang-23: 
/home/TPPPP/Documents/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:60:
 bool SubstQualifier(Sema &, const DeclT *, DeclT *, const 
MultiLevelTemplateArgumentList &) [DeclT = clang::DeclaratorDecl]: Assertion 
`(NewDecl->getFriendObjectKind() || 
!OldDecl->getLexicalDeclContext()->isDependentContext()) && "non-friend with 
qualified name defined in dependent context"' failed.
```

Current test `int MyClass::staticField = 42` misjudged the fundamental problem 
and the example I just provided would not trigger the modification involved in 
this PR.

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

Reply via email to