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