https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83911
--- Comment #2 from Jason Merrill <jason at gcc dot gnu.org> --- Created attachment 43445 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43445&action=edit patch The problem here is that we're substituting a dispatcher function for a constructor, and the dispatcher function isn't marked as being a constructor. This seems like a general issue that the dispatcher lacks all language-specific information that might be helpful, but in this specific instance it's easy enough to copy DECL_CXX_CONSTRUCTOR_P.