aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPatrick Palka <ppalka@redhat.com>2023-09-12 11:23:12 -0400
committerPatrick Palka <ppalka@redhat.com>2023-09-12 11:23:12 -0400
commit4289f6ceefe74ea46e792692448c06197ac20c86 (patch)
tree4e31e0b727d7077fb0e6c159c21d0fba97e94163 /gcc
parentf1e87aee5b7023fb4f5791c6869db705e18c2705 (diff)
downloadgcc-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