https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90849
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- Reduced: template <typename T> struct A { A () : A<int> ( 1 ) { } A (int); }; A<int> a; G++ and MSVC accept the delegating constructor, Clang and EDG reject it. It's not immediately obvious to me that this is invalid, because the base-specifier does name the class, making it a valid delegating constructor. It would be invalid in any other specialization of the class template, but that's OK. As long as there is one valid specialization it should be accepted.