[Bug c++/87676] Presence of variadic constructor template breaks overload resolution for other constructors

2018-10-22 Thread harald at gigawatt dot nl
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87676 --- Comment #6 from Harald van Dijk --- (In reply to Jonathan Wakely from comment #4) > Before the conversion sequence that binds a reference you need to initialize > the underlying temporary, which is a list-initialization sequence. You have > l

[Bug c++/87676] Presence of variadic constructor template breaks overload resolution for other constructors

2018-10-22 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87676 --- Comment #5 from Jonathan Wakely --- That's how I interpret it anyway, but I could be convinced otherwise. And maybe the standard isn't clear enough here.

[Bug c++/87676] Presence of variadic constructor template breaks overload resolution for other constructors

2018-10-22 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87676 --- Comment #4 from Jonathan Wakely --- 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 an

[Bug c++/87676] Presence of variadic constructor template breaks overload resolution for other constructors

2018-10-22 Thread harald at gigawatt dot nl
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87676 --- Comment #3 from Harald van Dijk --- (In reply to Jonathan Wakely from comment #1) > The template constructor allows s({1, 2, 3}) to mean s(S2{1,2,3}) which > tries to use the deleted copy constructor. Thanks, I think you're right about that.

[Bug c++/87676] Presence of variadic constructor template breaks overload resolution for other constructors

2018-10-22 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87676 --- Comment #2 from Jonathan Wakely --- (In reply to Jonathan Wakely from comment #1) > The template constructor allows s({1, 2, 3}) to mean s(S2{1,2,3}) which > tries to use the deleted copy constructor. Or more precisely, overload resolution m

[Bug c++/87676] Presence of variadic constructor template breaks overload resolution for other constructors

2018-10-22 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87676 --- Comment #1 from Jonathan Wakely --- The template constructor allows s({1, 2, 3}) to mean s(S2{1,2,3}) which tries to use the deleted copy constructor. Without the template constructor it can only mean s(S1{1,2,3}) which uses the move constru