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 cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits