public inbox for libstdc++-cvs@sourceware.org help / color / mirror / Atom feed
From: Jonathan Wakely <redi@gcc.gnu.org> To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc r10-8787] libstdc++: Use correct argument type for __use_alloc, again [PR 96803] Date: Tue, 22 Sep 2020 09:40:50 +0000 (GMT) [thread overview] Message-ID: <20200922094050.263C7398BC0D@sourceware.org> (raw) https://gcc.gnu.org/g:5a981195bd80ad64475bbc24b7a4d222a6a6eff5 commit r10-8787-g5a981195bd80ad64475bbc24b7a4d222a6a6eff5 Author: Jonathan Wakely <jwakely@redhat.com> Date: Tue Sep 22 08:42:18 2020 +0100 libstdc++: Use correct argument type for __use_alloc, again [PR 96803] While backporting 5494edae83ad33c769bd1ebc98f0c492453a6417 I noticed that it's still not correct. I made the allocator-extended constructor use the right type for the uses-allocator construction detection, but I used an rvalue when it should be a const lvalue. This should fix it properly this time. libstdc++-v3/ChangeLog: PR libstdc++/96803 * include/std/tuple (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)): Use correct value category in __use_alloc call. * testsuite/20_util/tuple/cons/96803.cc: Check with constructors that require correct value category to be used. (cherry picked from commit 7825399092d572ce8ea82c4aa8dfeb65076b0e52) Diff: --- libstdc++-v3/include/std/tuple | 2 +- libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple index c87ebdb7b83..94b9e0335b1 100644 --- a/libstdc++-v3/include/std/tuple +++ b/libstdc++-v3/include/std/tuple @@ -291,7 +291,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION const _Tuple_impl<_Idx, _UHead, _UTails...>& __in) : _Inherited(__tag, __a, _Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)), - _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), + _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), _Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)) { } template<typename _Alloc, typename _UHead, typename... _UTails> diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc index 9d3c07d55b2..867a42150e0 100644 --- a/libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc +++ b/libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc @@ -38,4 +38,25 @@ test01() // std::tuple chooses wrong constructor for uses-allocator construction std::tuple<int> o; std::tuple<X> nok(std::allocator_arg, std::allocator<int>(), o); + + std::tuple<int, int> oo; + std::tuple<X, X> nn(std::allocator_arg, std::allocator<int>(), oo); +} + +struct Y +{ + using allocator_type = std::allocator<int>; + + Y(const X&) { } + Y(const X&, const allocator_type&) { } + + Y(X&&) { } + Y(std::allocator_arg_t, const allocator_type&, X&&) { } +}; + +void +test02() +{ + std::tuple<X, X> o{1, 1}; + std::tuple<Y, Y> oo(std::allocator_arg, std::allocator<int>(), o); }
reply other threads:[~2020-09-22 9:40 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200922094050.263C7398BC0D@sourceware.org \ --to=redi@gcc.gnu.org \ --cc=gcc-cvs@gcc.gnu.org \ --cc=libstdc++-cvs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).