https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87676
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- Before the conversion sequence that binds a reference you need to initialize the underlying temporary, which is a list-initialization sequence. You have list-initialization sequence L1 from {1,2,3} to S1 and list-initialization sequence L2 from {1,2,3} to S2. Neither L1 nor L2 is better than the other according to http://eel.is/c++draft/over.match.best#over.ics.rank-3.1