This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++17 status.
2747. Possibly redundantstd::move
in [alg.foreach]
Section: 26.6.5 [alg.foreach] Status: C++17 Submitter: Jonathan Wakely Opened: 2016-07-15 Last modified: 2017-07-30
Priority: 0
View other active issues in [alg.foreach].
View all other issues in [alg.foreach].
View all issues with C++17 status.
Discussion:
26.6.5 [alg.foreach] p3 says Returns: std::move(f)
.
f
is a function parameter overload resolution to select the constructor for the return value is first performed as if for an rvalue, so the std::move
is redundant. It could be argued that it isn't entirely redundant, because it says that implementations can't do something slightly different like return an lvalue reference that is bound to f
, which would prevent it being treated as an rvalue. We should discuss it.
[2016-07 Chicago]
Monday: P0 - tentatively ready
Proposed resolution:
This wording is relative to N4606.
Change 26.6.5 [alg.foreach] as indicated:
template<class InputIterator, class Function> Function for_each(InputIterator first, InputIterator last, Function f);[…]
-3- Returns:std::move(f )
. […]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4