hokein wrote:

It does filter out the `missing-dependent-template-keyword` warnings, but 
doesn't fix the absl case.

With 
https://github.com/llvm/llvm-project/commit/ce4aada6e2135e29839f672a6599db628b53295d,
 there is a behavior change in clang. Clang reject the following code which was 
accepted before by emitting a hard error `err_no_member`.


```
#define TYPE_OR_NONTYPE int

template<TYPE_OR_NONTYPE T>
struct BaseT {
  void Foo(); // expected-note{{found by ambiguous name lookup}}
};

template<TYPE_OR_NONTYPE T>
struct DerivedT : BaseT<T> {
  void Inner();
};

template<TYPE_OR_NONTYPE T>
void DerivedT<T>::Inner() {
  this->BaseT<T>::Foo();
}
```

- If the `TYPE_OR_NONTYPE` is `typename` (type template parameter case), clang 
emits a `missing-dependent-template-keyword` warning, which can be suppressed;
- If the `TYPE_OR_NONTYPE` is `int` (non-type template parameter case), clang 
emits a hard error `err_no_member`;

https://github.com/llvm/llvm-project/pull/98613
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to