Update reference

This commit is contained in:
Braden Ganetsky 2024-01-19 13:45:57 -06:00
parent 1d25c1c053
commit bbad4735aa
6 changed files with 24 additions and 3 deletions

View File

@ -6,6 +6,11 @@
:github-pr-url: https://github.com/boostorg/unordered/pull :github-pr-url: https://github.com/boostorg/unordered/pull
:cpp: C++ :cpp: C++
== Release 1.85.0
* Optimized `emplace()` for a `value_type` or `init_type` (if applicable) argument to bypass creating an intermediate object. The argument is already the same type as the would-be intermediate object.
* Optimized `emplace()` for `k,v` arguments on map containers to delay constructing the object until it is certain that an element should be inserted. This optimization happens when the map's `key_type` is move constructible or when the `k` argument is a `key_type`.
== Release 1.84.0 - Major update == Release 1.84.0 - Major update
* Added `boost::concurrent_flat_set`. * Added `boost::concurrent_flat_set`.

View File

@ -908,7 +908,9 @@ Inserts an object, constructed with the arguments `args`, in the table if and on
Requires:;; `value_type` is constructible from `args`. Requires:;; `value_type` is constructible from `args`.
Returns:;; `true` if an insert took place. Returns:;; `true` if an insert took place.
Concurrency:;; Blocking on rehashing of `*this`. Concurrency:;; Blocking on rehashing of `*this`.
Notes:;; Invalidates pointers and references to elements if a rehashing is issued. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. +
+
If `args...` is of the form `k,v`, it delays constructing the whole object until it is certain that an element should be inserted, using only the `k` argument to check.
--- ---

View File

@ -15,4 +15,6 @@ Copyright (C) 2022-2023 Joaquín M López Muñoz
Copyright (C) 2022-2023 Peter Dimov Copyright (C) 2022-2023 Peter Dimov
Copyright (C) 2024 Braden Ganetsky
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

View File

@ -750,6 +750,8 @@ Returns:;; The `bool` component of the return type is `true` if an insert took p
If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key.
Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect.
Notes:;; Can invalidate iterators, pointers and references, but only if the insert causes the load to be greater than the maximum load. + Notes:;; Can invalidate iterators, pointers and references, but only if the insert causes the load to be greater than the maximum load. +
+
If `args...` is of the form `k,v`, it delays constructing the whole object until it is certain that an element should be inserted, using only the `k` argument to check.
--- ---
@ -769,6 +771,8 @@ Returns:;; The `bool` component of the return type is `true` if an insert took p
If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key.
Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect.
Notes:;; Can invalidate iterators, pointers and references, but only if the insert causes the load to be greater than the maximum load. + Notes:;; Can invalidate iterators, pointers and references, but only if the insert causes the load to be greater than the maximum load. +
+
If `args...` is of the form `k,v`, it delays constructing the whole object until it is certain that an element should be inserted, using only the `k` argument to check.
--- ---

View File

@ -797,7 +797,9 @@ If an insert took place, then the iterator points to the newly inserted element.
Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect.
Notes:;; Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. + Notes:;; Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. +
+ +
Pointers and references to elements are never invalidated. Pointers and references to elements are never invalidated. +
+
If `args...` is of the form `k,v`, it delays constructing the whole object until it is certain that an element should be inserted, using only the `k` argument to check. This optimization happens when the map's `key_type` is move constructible or when the `k` argument is a `key_type`.
--- ---
@ -818,7 +820,9 @@ Notes:;; The standard is fairly vague on the meaning of the hint. But the only p
+ +
Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. + Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. +
+ +
Pointers and references to elements are never invalidated. Pointers and references to elements are never invalidated. +
+
If `args...` is of the form `k,v`, it delays constructing the whole object until it is certain that an element should be inserted, using only the `k` argument to check. This optimization happens when the map's `key_type` is move constructible or when the `k` argument is a `key_type`.
--- ---

View File

@ -767,6 +767,8 @@ Returns:;; The `bool` component of the return type is `true` if an insert took p
If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key.
Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect.
Notes:;; Can invalidate iterators, but only if the insert causes the load to be greater than the maximum load. + Notes:;; Can invalidate iterators, but only if the insert causes the load to be greater than the maximum load. +
+
If `args...` is of the form `k,v`, it delays constructing the whole object until it is certain that an element should be inserted, using only the `k` argument to check. This optimization happens when `key_type` is move constructible or when the `k` argument is a `key_type`.
--- ---
@ -786,6 +788,8 @@ Returns:;; The `bool` component of the return type is `true` if an insert took p
If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key.
Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect.
Notes:;; Can invalidate iterators, but only if the insert causes the load to be greater than the maximum load. + Notes:;; Can invalidate iterators, but only if the insert causes the load to be greater than the maximum load. +
+
If `args...` is of the form `k,v`, it delays constructing the whole object until it is certain that an element should be inserted, using only the `k` argument to check. This optimization happens when `key_type` is move constructible or when the `k` argument is a `key_type`.
--- ---