This is the mail archive of the
gdb-testers@sourceware.org
mailing list for the GDB project.
[binutils-gdb] Add rvalue references to overloading resolution
- From: sergiodj+buildbot at sergiodj dot net
- To: gdb-testers at sourceware dot org
- Date: Mon, 07 Aug 2017 16:24:32 -0400
- Subject: [binutils-gdb] Add rvalue references to overloading resolution
- Authentication-results: sourceware.org; auth=none
*** TEST RESULTS FOR COMMIT 15c0a2a9305648095f5586a02b5a5017e1643e99 ***
Author: Artemiy Volkov <artemiyv@acm.org>
Branch: master
Commit: 15c0a2a9305648095f5586a02b5a5017e1643e99
Add rvalue references to overloading resolution
This patch introduces changes to rank_one_type() dealing with ranking an rvalue
reference type when selecting a best viable function from a set of candidate
functions. The 4 new added rules for rvalue references are:
1) An rvalue argument cannot be bound to a non-const lvalue reference parameter
and an lvalue argument cannot be bound to an rvalue reference parameter.
[C++11 13.3.3.1.4p3]
2) If a conversion to one type of reference is an identity conversion, and a
conversion to the second type of reference is a non-identity conversion, choose
the first type. [C++11 13.3.3.2p3]
3) An rvalue should be first tried to bind to an rvalue reference, and then to
an lvalue reference. [C++11 13.3.3.2p3]
4) An lvalue reference to a function gets higher priority than an rvalue
reference to a function. [C++11 13.3.3.2p3]
This patch is not exactly correct. See c++/15372 for tracking overload
resolution bugs.
gdb/ChangeLog
PR gdb/14441
* gdbtypes.c (rank_one_type): Implement overloading
resolution rules regarding rvalue references.