https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80858
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- Yes, that's great, thanks. As you observed, Clang doesn't indicate the location that triggers the invalid instantiation, but EDG does, correctly pointing to line 22: "um2.cc", line 9: error: no suitable constructor exists to convert from "int" to "Empty" T t(3); ^ detected during: instantiation of "A<T> &A<T>::operator=(const A<T> &) [with T=Empty]" at line 22 implicit generation of "B &B::operator=(const B &)" at line 22 1 error detected in the compilation of "um2.cc".