std::ranges:: move_backward, std::ranges:: move_backward_result - Reference

en.cppreference.com/w/cpp/algorithm/ranges/move_backward     2025-02-11T00:00:00.0000000
The elements in the moved-from range will still contain valid values of the appropriate type, but not necessarily the same values as before the move, as if using * (d_last -n) = ranges:: iter_move (last -n) for each integer n, where 0 ≤ n < N.. The function-like entities described on this page are algorithm function objects (informally known as niebloids), that is:

std::move_backward - cppreference.com

en.cppreference.com/w/cpp/algorithm/move_backward     2025-02-11T00:00:00.0000000
Moves the elements from the range [first, last), to another range ending at d_last. The elements are moved in reverse order (the last element is moved first), but their relative order is preserved. If d_last is within (first, last], the behavior is undefined. In this case, std::move may be used instead.

Ranges library (since C++20) - cppreference.com

en.cppreference.com/w/cpp/ranges/     2025-02-20T00:00:00.0000000
The ranges library includes range algorithms, which are applied to ranges eagerly, and range adaptors, which are applied to views lazily. Adaptors can be composed into pipelines, so that their actions take place as the view is iterated.

Algorithms library - cppreference.com

en.cppreference.com/w/cpp/algorithm/     2025-02-14T00:00:00.0000000
Constrained algorithms (since C++20) C++20 provides constrained versions of most algorithms in the namespace std::ranges.In these algorithms, a range can be specified as either an iterator-sentinel pair or as a single range argument, and projections and pointer-to-member callables are supported. Additionally, the return types of most algorithms have been changed to return all potentially ...

Constrained algorithms (since C++20) - cppreference.com

en.cppreference.com/w/cpp/algorithm/ranges.html     2024-11-27T00:00:00.0000000
C++20 provides constrained versions of most algorithms in the namespace std::ranges.In these algorithms, a range can be specified as either an iterator-sentinel pair or as a single range argument, and projections and pointer-to-member callables are supported. Additionally, the return types of most algorithms have been changed to return all potentially useful information computed during the ...

std::ranges:: move, std::ranges:: move_result - Reference

en.cppreference.com/w/cpp/algorithm/ranges/move     2025-02-11T00:00:00.0000000
The elements in the moved-from range will still contain valid values of the appropriate type, but not necessarily the same values as before the move.. The function-like entities described on this page are algorithm function objects (informally known as niebloids), that is: . Explicit template argument lists cannot be specified when calling any of them.

std::move - cppreference.com

www.en.cppreference.com/w/cpp/algorithm/move.html     2025-02-11T00:00:00.0000000
Notes. When moving overlapping ranges, std::move is appropriate when moving to the left (beginning of the destination range is outside the source range) while std::move_backward is appropriate when moving to the right (end of the destination range is outside the source range). [] ExamplThe following code moves thread objects (which themselves are not copyable) from one container to another.

std::ranges:: remove, std::ranges:: remove_if - en.cppreference.com

en.cppreference.com/w/cpp/algorithm/ranges/remove.html
Return value {ret, last}, where [first, ret) is the resulting subrange after removal, and the elements in subrange [ret, last) are all in valid but unspecified state, i.e. [ret, last) is the subrange to be erased.[] ComplexitExactly N applications of the corresponding predicate and any projection, where N = ranges:: distance (first, last), and N -1 move operations at worst.

std::ranges::reverse - cppreference.com

www.en.cppreference.com/w/cpp/algorithm/ranges/reverse.html     2025-02-11T00:00:00.0000000
The function-like entities described on this page are algorithm function objects (informally known as niebloids), that is: . Explicit template argument lists cannot be specified when calling any of them. None of them are visible to argument-dependent lookup.; When any of them are found by normal unqualified lookup as the name to the left of the function-call operator, argument-dependent lookup ...

std::ranges::in_out_result - cppreference.com

www.en.cppreference.com/w/cpp/algorithm/ranges/return_types/in_out_result.html
Each standard library algorithm that uses this family of return types declares a new alias type, e.g. using merge_result = in_in_out_result < I1, I2, O >;. The names for such aliases are formed by adding the suffix "_result" to the algorithm's name. So, the return type of std::ranges::merge can be named as std::ranges::merge_result.
Feedback