diff options
author | Patrick Palka <ppalka@redhat.com> | 2023-09-12 11:23:12 -0400 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2023-09-12 11:23:12 -0400 |
commit | 4289f6ceefe74ea46e792692448c06197ac20c86 (patch) | |
tree | 4e31e0b727d7077fb0e6c159c21d0fba97e94163 /gcc | |
parent | f1e87aee5b7023fb4f5791c6869db705e18c2705 (diff) | |
download | gcc-4289f6ceefe74ea46e792692448c06197ac20c86.zip gcc-4289f6ceefe74ea46e792692448c06197ac20c86.tar.gz gcc-4289f6ceefe74ea46e792692448c06197ac20c86.tar.bz2 |
libstdc++: Fix std::bind_front perfect forwarding [PR111327]
In order to properly implement a perfect forwarding call wrapper (without
C++23 deducing 'this') we need a total of 8 operator() overloads, 4
enabled ones and 4 deleted ones, i.e. two for each const/ref qual pair,
as described in section 5.5 of P0847R6. Otherwise the wrapper may not
do the right thing if the underlying function object has a deleted
const/ref-qualified operator() overload. This patch fixes this issue in
std::bind_front.
PR libstdc++/111327
libstdc++-v3/ChangeLog:
* include/std/functional (_Bind_front::operator()): Add deleted
fallback overloads for each const/ref qualifier pair. Give the
enabled overloads dummy constraints to make each one more
specialized than the corresponding deleted overload.
* testsuite/20_util/function_objects/bind_front/111327.cc: New test.
Diffstat (limited to 'gcc')
0 files changed, 0 insertions, 0 deletions