rupprecht wrote:
After this commit, I'm seeing another "out-of-line definition" error for
`operator=` on the following reduced snippet:
```c++
class Foo {};
template <class X, class Y = void>
struct Stuff;
template <class Unused>
struct Stuff<Foo, Unused> {
Stuff& operator=(Stuff&& that);
};
template <class T>
using Alias = Stuff<Foo, T>;
template <class T>
Alias<T>& Alias<T>::operator=(Alias<T>&& that) {
return *this;
}
```
Results in:
```c++
<source>:15:21: error: out-of-line definition of 'operator=' does not match any
declaration in 'Stuff<Foo, type-parameter-0-0>'
15 | Alias<T>& Alias<T>::operator=(Alias<T>&& that) {
| ^~~~~~~~
```
Is that error expected?
Live conformance view: https://godbolt.org/z/eanhMEevn
I'm also seeing a separate `template argument for template type parameter must
be a type; did you forget 'typename'?` error nearby. I could add `typename` to
appease the compiler, although I'm not sure if it's supposed to be necessary.
https://github.com/llvm/llvm-project/pull/75069
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits