This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/25950] [DR 391] Reference binding and explicit copy constructors
- From: "jason at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 24 Oct 2007 03:45:49 -0000
- Subject: [Bug c++/25950] [DR 391] Reference binding and explicit copy constructors
- References: <bug-25950-11686@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #27 from jason at gcc dot gnu dot org 2007-10-24 03:45 -------
Subject: Bug 25950
Author: jason
Date: Wed Oct 24 03:45:37 2007
New Revision: 129596
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=129596
Log:
PR c++/25950 (DR 391)
* call.c (struct conversion): Remove check_copy_constructor_p.
(reference_binding): Always bind a reference directly to a
compatible class rvalue. Pass down LOOKUP_NO_TEMP_BIND during
temporary creation.
(check_constructor_callable): Remove.
(convert_like_real): Don't call it.
(initialize_reference): Don't call check_constructor_callable.
(standard_conversion): Check LOOKUP_NO_CONVERSION instead of
LOOKUP_CONSTRUCTOR_CALLABLE. Don't require a temporary for base
conversions if LOOKUP_NO_TEMP_BIND.
(implicit_conversion): Pass through LOOKUP_NO_TEMP_BIND.
(build_user_type_conversion_1): Pass through LOOKUP_NO_TEMP_BIND for
second conversion.
* cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): Remove.
Added:
trunk/gcc/testsuite/g++.dg/overload/reftemp1.C
trunk/gcc/testsuite/g++.dg/overload/reftemp2.C
Removed:
trunk/gcc/testsuite/g++.dg/init/copy7.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/call.c
trunk/gcc/cp/cp-tree.h
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25950