rithm/ranges&action=edit&section=3 "Edit
section: Constrained fold operations") ]  Constrained fold operations

Defined in header ` [ <algorithm> ](/w/cpp/header/algorithm
"cpp/header/algorithm") `  
---  
Defined in namespace ` std::ranges `  
[ ranges::fold_left  ](/w/cpp/algorithm/ranges/fold_left "cpp/algorithm/ranges/fold left") (C++23)  |  left-folds a range of elements   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_fold_left&action=edit)  
[ ranges::fold_left_first  ](/w/cpp/algorithm/ranges/fold_left_first "cpp/algorithm/ranges/fold left first") (C++23)  |  left-folds a range of elements using the first element as an initial value   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_fold_left_first&action=edit)  
[ ranges::fold_right  ](/w/cpp/algorithm/ranges/fold_right "cpp/algorithm/ranges/fold right") (C++23)  |  right-folds a range of elements   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_fold_right&action=edit)  
[ ranges::fold_right_last  ](/w/cpp/algorithm/ranges/fold_right_last "cpp/algorithm/ranges/fold right last") (C++23)  |  right-folds a range of elements using the last element as an initial value   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_fold_right_last&action=edit)  
[ ranges::fold_left_with_iter  ](/w/cpp/algorithm/ranges/fold_left_with_iter "cpp/algorithm/ranges/fold left with iter") (C++23)  |  left-folds a range of elements, and returns a [ pair ](/w/cpp/algorithm/ranges/return_types/in_value_result "cpp/algorithm/ranges/return types/in value result") (iterator, value)   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_fold_left_with_iter&action=edit)  
[ ranges::fold_left_first_with_iter  ](/w/cpp/algorithm/ranges/fold_left_first_with_iter "cpp/algorithm/ranges/fold left first with iter") (C++23)  |  left-folds a range of elements using the first element as an initial value, and returns a [ pair ](/w/cpp/algorithm/ranges/return_types/in_value_result "cpp/algorithm/ranges/return types/in value result") (iterator, [ optional ](/w/cpp/utility/optional "cpp/utility/optional") )   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_fold_left_first_with_iter&action=edit)  
  
###  [ [ edit
](/mwiki/index.php?title=cpp/algorithm/ranges&action=edit&section=4 "Edit
section: Constrained uninitialized memory algorithms") ]  Constrained
uninitialized memory algorithms

Defined in header ` [ <memory> ](/w/cpp/header/memory "cpp/header/memory") `  
---  
Defined in namespace ` std::ranges `  
[ ranges::uninitialized_copy  ](/w/cpp/memory/ranges/uninitialized_copy "cpp/memory/ranges/uninitialized copy") (C++20)  |  copies a range of objects to an uninitialized area of memory   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/memory/ranges/dsc_uninitialized_copy&action=edit)  
[ ranges::uninitialized_copy_n  ](/w/cpp/memory/ranges/uninitialized_copy_n "cpp/memory/ranges/uninitialized copy n") (C++20)  |  copies a number of objects to an uninitialized area of memory   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/memory/ranges/dsc_uninitialized_copy_n&action=edit)  
[ ranges::uninitialized_fill  ](/w/cpp/memory/ranges/uninitialized_fill "cpp/memory/ranges/uninitialized fill") (C++20)  |  copies an object to an uninitialized area of memory, defined by a range   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/memory/ranges/dsc_uninitialized_fill&action=edit)  
[ ranges::uninitialized_fill_n  ](/w/cpp/memory/ranges/uninitialized_fill_n "cpp/memory/ranges/uninitialized fill n") (C++20)  |  copies an object to an uninitialized area of memory, d