gcc/libstdc++-v3
Patrick Palka 2a36d22ab5 libstdc++: Avoid redundant value_type object in flat_set::emplace [PR119620]
flat_set::emplace (and flat_multiset's) currently unconditionally
constructs an object outside of the container, but if we're passed
a value_type object we can and should avoid that.

	PR libstdc++/119620

libstdc++-v3/ChangeLog:

	* include/std/flat_set (_Flat_set_impl::_M_try_emplace): Split
	out into two overloads, one taking at least one argument and one
	taking zero arguments.  Turn __k into an auto&& reference bound
	to __arg if it's already a value_type and otherwise bound to a
	lifetime-extended value_type temporary.
	* testsuite/23_containers/flat_multiset/1.cc (test08): New test.
	* testsuite/23_containers/flat_set/1.cc (test08): New test.

Reviewed-by: Tomasz Kamiński <tkaminsk@redhat.com>
Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
2025-04-04 15:05:09 -04:00
..
config libstdc++, nvptx: Remove machinery to inject per-file flags 2025-04-03 23:23:06 +02:00
doc libstdc++: Fix some broken links in the manual 2025-03-24 21:57:56 +00:00
include libstdc++: Avoid redundant value_type object in flat_set::emplace [PR119620] 2025-04-04 15:05:09 -04:00
libsupc++ Update copyright years. 2025-01-02 11:59:57 +01:00
po Update copyright years. 2025-01-02 11:59:57 +01:00
python libstdc++: Make GDB skip over some library functions [PR118260] 2025-01-08 12:45:38 +00:00
scripts libstdc++: Fix gnu.ver CXXABI_1.3.16 for Solaris [PR118701] 2025-02-05 09:59:56 +01:00
src Optimize string constructor 2025-03-30 23:51:19 +02:00
testsuite libstdc++: Avoid redundant value_type object in flat_set::emplace [PR119620] 2025-04-04 15:05:09 -04:00
.editorconfig libstdc++: editorconfig: Adjust wildcard patterns 2024-12-07 08:49:26 +00:00
acinclude.m4 Libstdc++: Fix bootstrap failure for cross without tm.tm_zone [PR119550] 2025-03-31 22:54:08 +01:00
aclocal.m4
ChangeLog Daily bump. 2025-04-04 00:16:45 +00:00
ChangeLog-1998
ChangeLog-1999
ChangeLog-2000
ChangeLog-2001
ChangeLog-2002
ChangeLog-2003
ChangeLog-2004
ChangeLog-2005
ChangeLog-2006
ChangeLog-2007
ChangeLog-2008
ChangeLog-2009
ChangeLog-2010
ChangeLog-2011
ChangeLog-2012
ChangeLog-2013 Rotate ChangeLog files. 2025-01-02 11:06:31 +01:00
ChangeLog-2014
ChangeLog-2015
ChangeLog-2016
ChangeLog-2017
ChangeLog-2018
ChangeLog-2019
ChangeLog-2020
ChangeLog-2021
ChangeLog-2022 Rotate ChangeLog files. 2025-01-02 11:06:31 +01:00
ChangeLog-2023 Rotate ChangeLog files. 2025-01-02 11:06:31 +01:00
ChangeLog-2024 Rotate ChangeLog files. 2025-01-02 11:06:31 +01:00
config.h.in Libstdc++: Fix bootstrap failure for cross without tm.tm_zone [PR119550] 2025-03-31 22:54:08 +01:00
configure Libstdc++: Fix bootstrap failure for cross without tm.tm_zone [PR119550] 2025-03-31 22:54:08 +01:00
configure.ac Libstdc++: Fix bootstrap failure for cross without tm.tm_zone [PR119550] 2025-03-31 22:54:08 +01:00
configure.host libstdc++, nvptx: Remove machinery to inject per-file flags 2025-04-03 23:23:06 +02:00
crossconfig.m4
fragment.am
linkage.m4
Makefile.am Update copyright years. 2025-01-02 11:59:57 +01:00
Makefile.in libstdc++: Use -C option to run recursive make in sub-directories 2024-11-16 01:05:06 +00:00
README

file: libstdc++-v3/README

New users may wish to point their web browsers to the file
index.html in the 'doc/html' subdirectory.  It contains brief
building instructions and notes on how to configure the library in
interesting ways.