Open dhollman opened 3 months ago
SG9 discussed it in Tokyo on Wednesday: https://wiki.edg.com/bin/view/Wg21tokyo2024/NotesSG9P3179R0
Poll: std::ranges::for_each[_n]
(non-execution policy) returns the iterator and the function object, as you could accumulate state in the function object. The version of std::ranges::for_each[_n]
with an execution policy should not return the function object (you can't accumulate state in there and for consistency with the non-range parallel version).
SF | F | N | A | SA |
---|---|---|---|---|
2 | 4 | 2 | 0 | 0 |
Attendance: 8 Author: N Outcome: Strong consensus in favor.
Poll: std::ranges::for_each[_n]
with execution policy should return the computed end iterator.
SF | F | N | A | SA |
---|---|---|---|---|
4 | 2 | 2 | 0 | 0 |
Attendance: 9 Author: N Outcome: Strong consensus in favor.
Poll: All other std::ranges algorithms with execution policy should return the same result type as the std::ranges version without execution policy.
Unanimous consent. Attendance: 9
Poll: Like the C++17 parallel algorithms, the std::ranges
parallel version should also allow forward iterators, not just random access iterators. This means that the implementation might need to silently fallback to serial code, but can parallelize some special cases of non-random access iterators that would be prohibited otherwise.
SF | F | N | A | SA |
---|---|---|---|---|
3 | 2 | 3 | 1 | 1 |
Attendance: 10 Author: N, I see the value for both directions. Outcome: Weak consensus in favor. SA: This is user-hostile and something we already warn against. We shouldn't standardize something we warn against.
Poll: The std::ranges
parallel algorithms should require that the function objects passed as arguments have a const-qualified operator()
.
SF | F | N | A | SA |
---|---|---|---|---|
0 | 7 | 2 | 0 | 0 |
Attendance: 10 Author: F Outcome: Strong consensus in favor. Abstain: I would like field experience before deciding.
The author will incorporate feedback and come back with a new revision. There were also concerned raised about the explosion of algorithm variants when this and a potential future paper proposing sender/receiver based async algorithms are both added. A joint session with SG1 and SG9 and potentially LEWG as a whole is probably necessary to address those concerns.
P3179R0 C++ parallel range algorithms (Ruslan Arutyunyan, Alexey Kukanov)
P3179R1 C++ parallel range algorithms (Ruslan Arutyunyan, Alexey Kukanov)
@dhollman @foonathan @ogiroux - do you think you could have a joint session for this in St. Louis? Or does it require more time in SG9 before that?
Continue work on P3179R2 for IS'26 with these notes:
P3179RO C++ parallel range algorithms (Ruslan Arutyunyan, Alexey Kukanov)