c++: reference list-init, conversion fn [PR113141]
commitd435571b54b02946c97b5b24f20e5a7058fd96a1
authorJason Merrill <jason@redhat.com>
Fri, 12 Apr 2024 17:24:44 +0000 (12 13:24 -0400)
committerJason Merrill <jason@redhat.com>
Fri, 12 Apr 2024 19:34:29 +0000 (12 15:34 -0400)
treedcefab193f8f1cc586c1722e3dc0757f5c899e3b
parentc9500083073ff5e0f5c1c9db92d7ce6e51a62919
c++: reference list-init, conversion fn [PR113141]

The original testcase in PR113141 is an instance of CWG1996; the standard
fails to consider conversion functions when initializing a reference
directly from an initializer-list of one element, but then does consider
them when initializing a temporary.  I have a proposed fix for this defect,
which is implemented here.

DR 1996
PR c++/113141

gcc/cp/ChangeLog:

* call.cc (reference_binding): Check direct binding from
a single-element list.

gcc/testsuite/ChangeLog:

* g++.dg/cpp0x/initlist-ref1.C: New test.
* g++.dg/cpp0x/initlist-ref2.C: New test.
* g++.dg/cpp0x/initlist-ref3.C: New test.

Co-authored-by: Patrick Palka <ppalka@redhat.com>
gcc/cp/call.cc
gcc/testsuite/g++.dg/cpp0x/initlist-ref1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/initlist-ref2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/initlist-ref3.C [new file with mode: 0644]