https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107958
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #4) > I think GCC and MSVC are correct here: > [over.match.list]/16.3.1.7 > . In copy-listinitialization, if an explicit constructor is chosen, the > initialization is ill-formed. [ Note: This differs from > other situations (16.3.1.3, 16.3.1.4), where only converting constructors > are considered for copy-initialization. > This restriction only applies if this initialization is part of the final > result of overload resolution. — end note ] > > > Even though the note is techincally not part of the standard, it describes > why clang is wrong here. That is the explicit constructors are used too to > figure out the overload and only if there was no ambiguous, it would be > considered as ill-formed. Also see clang bug https://github.com/llvm/llvm-project/issues/28016