mirror of
https://github.com/boostorg/unordered.git
synced 2025-11-03 09:11:42 +01:00
Use std::ref instead of copying the function parameter… (#290)
* GHA: revise numerous CI jobs. Fix sanitizer on new kernel
* Use std::ref instead of copying the function parameter in std::initializer_list overloads of insert_{or|and}_[c]visit
* Reimplement detail::is_invocable
* Update docs for std::ref(f) changes
---------
Co-authored-by: sdarwin <samuel.d.darwin@gmail.com>
This commit is contained in:
@@ -19,6 +19,7 @@ visits the element if insertion did _not_ take place).
|
||||
* Added GDB pretty-printers for all containers and iterators. For a container with an allocator that uses fancy pointers, these only work if the proper pretty-printer is written for the fancy pointer type itself.
|
||||
* Fixed `std::initializer_list` assignment issues for open-addressing containers
|
||||
({github-pr-url}/277[PR#277^]).
|
||||
* Allowed non-copyable callables to be passed to the `std::initializer_list` overloads of `insert_{and|or}_[c]visit` for concurrent containers, by internally passing a `std::reference_wrapper` of the callable to the iterator-pair overloads.
|
||||
|
||||
|
||||
== Release 1.86.0
|
||||
|
||||
@@ -1148,7 +1148,7 @@ template<class F> size_type insert_or_cvisit(std::initializer_list<value_type> i
|
||||
Equivalent to
|
||||
[listing,subs="+macros,+quotes"]
|
||||
-----
|
||||
this->xref:#concurrent_flat_map_insert_iterator_range_or_visit[insert_or_[c\]visit](il.begin(), il.end(), f);
|
||||
this->xref:#concurrent_flat_map_insert_iterator_range_or_visit[insert_or_[c\]visit](il.begin(), il.end(), std::ref(f));
|
||||
-----
|
||||
|
||||
[horizontal]
|
||||
@@ -1246,15 +1246,15 @@ Returns:;; The number of elements inserted.
|
||||
==== Insert Initializer List and Visit
|
||||
```c++
|
||||
template<class F1, class F2>
|
||||
size_type insert_or_visit(std::initializer_list<value_type> il, F1 f1, F2 f2);
|
||||
size_type insert_and_visit(std::initializer_list<value_type> il, F1 f1, F2 f2);
|
||||
template<class F1, class F2>
|
||||
size_type insert_or_cvisit(std::initializer_list<value_type> il, F1 f1, F2 f2);
|
||||
size_type insert_and_cvisit(std::initializer_list<value_type> il, F1 f1, F2 f2);
|
||||
```
|
||||
|
||||
Equivalent to
|
||||
[listing,subs="+macros,+quotes"]
|
||||
-----
|
||||
this->xref:#concurrent_flat_map_insert_iterator_range_and_visit[insert_and_[c\]visit](il.begin(), il.end(), f1, f2);
|
||||
this->xref:#concurrent_flat_map_insert_iterator_range_and_visit[insert_and_[c\]visit](il.begin(), il.end(), std::ref(f1), std::ref(f2));
|
||||
-----
|
||||
|
||||
[horizontal]
|
||||
|
||||
@@ -1106,7 +1106,7 @@ template<class F> size_type insert_or_cvisit(std::initializer_list<value_type> i
|
||||
Equivalent to
|
||||
[listing,subs="+macros,+quotes"]
|
||||
-----
|
||||
this->xref:#concurrent_flat_set_insert_iterator_range_or_visit[insert_or_[c\]visit](il.begin(), il.end(), f);
|
||||
this->xref:#concurrent_flat_set_insert_iterator_range_or_visit[insert_or_[c\]visit](il.begin(), il.end(), std::ref(f));
|
||||
-----
|
||||
|
||||
[horizontal]
|
||||
@@ -1222,7 +1222,7 @@ template<class F1, class F2>
|
||||
Equivalent to
|
||||
[listing,subs="+macros,+quotes"]
|
||||
-----
|
||||
this->xref:#concurrent_flat_set_insert_iterator_range_and_visit[insert_and_[c\]visit](il.begin(), il.end(), f1, f2);
|
||||
this->xref:#concurrent_flat_set_insert_iterator_range_and_visit[insert_and_[c\]visit](il.begin(), il.end(), std::ref(f1), std::ref(f2));
|
||||
-----
|
||||
|
||||
[horizontal]
|
||||
|
||||
@@ -1207,7 +1207,7 @@ template<class F> size_type insert_or_cvisit(std::initializer_list<value_type> i
|
||||
Equivalent to
|
||||
[listing,subs="+macros,+quotes"]
|
||||
-----
|
||||
this->xref:#concurrent_node_map_insert_iterator_range_or_visit[insert_or_[c\]visit](il.begin(), il.end(), f);
|
||||
this->xref:#concurrent_node_map_insert_iterator_range_or_visit[insert_or_[c\]visit](il.begin(), il.end(), std::ref(f));
|
||||
-----
|
||||
|
||||
[horizontal]
|
||||
@@ -1320,15 +1320,15 @@ Returns:;; The number of elements inserted.
|
||||
==== Insert Initializer List and Visit
|
||||
```c++
|
||||
template<class F1, class F2>
|
||||
size_type insert_or_visit(std::initializer_list<value_type> il, F1 f1, F2 f2);
|
||||
size_type insert_and_visit(std::initializer_list<value_type> il, F1 f1, F2 f2);
|
||||
template<class F1, class F2>
|
||||
size_type insert_or_cvisit(std::initializer_list<value_type> il, F1 f1, F2 f2);
|
||||
size_type insert_and_cvisit(std::initializer_list<value_type> il, F1 f1, F2 f2);
|
||||
```
|
||||
|
||||
Equivalent to
|
||||
[listing,subs="+macros,+quotes"]
|
||||
-----
|
||||
this->xref:#concurrent_node_map_insert_iterator_range_and_visit[insert_and_[c\]visit](il.begin(), il.end(), f1, f2);
|
||||
this->xref:#concurrent_node_map_insert_iterator_range_and_visit[insert_and_[c\]visit](il.begin(), il.end(), std::ref(f1), std::ref(f2));
|
||||
-----
|
||||
|
||||
[horizontal]
|
||||
|
||||
@@ -1164,7 +1164,7 @@ template<class F> size_type insert_or_cvisit(std::initializer_list<value_type> i
|
||||
Equivalent to
|
||||
[listing,subs="+macros,+quotes"]
|
||||
-----
|
||||
this->xref:#concurrent_node_set_insert_iterator_range_or_visit[insert_or_[c\]visit](il.begin(), il.end(), f);
|
||||
this->xref:#concurrent_node_set_insert_iterator_range_or_visit[insert_or_[c\]visit](il.begin(), il.end(), std::ref(f));
|
||||
-----
|
||||
|
||||
[horizontal]
|
||||
@@ -1295,7 +1295,7 @@ template<class F1, class F2>
|
||||
Equivalent to
|
||||
[listing,subs="+macros,+quotes"]
|
||||
-----
|
||||
this->xref:#concurrent_node_set_insert_iterator_range_and_visit[insert_and_[c\]visit](il.begin(), il.end(), f1, f2);
|
||||
this->xref:#concurrent_node_set_insert_iterator_range_and_visit[insert_and_[c\]visit](il.begin(), il.end(), std::ref(f1), std::ref(f2));
|
||||
-----
|
||||
|
||||
[horizontal]
|
||||
|
||||
Reference in New Issue
Block a user