[all-commits] [llvm/llvm-project] 390343: [libcxx] adds ranges::fold_left_with_iter and rang...

Christopher Di Bella via All-commits all-commits at lists.llvm.org
Tue Dec 19 21:58:04 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 3903438860b6eebf53a912c672560e1e55311220
      https://github.com/llvm/llvm-project/commit/3903438860b6eebf53a912c672560e1e55311220
  Author: Christopher Di Bella <cjdb at google.com>
  Date:   2023-12-19 (Tue, 19 Dec 2023)

  Changed paths:
    M libcxx/docs/Status/RangesAlgorithms.csv
    M libcxx/include/CMakeLists.txt
    A libcxx/include/__algorithm/fold.h
    M libcxx/include/algorithm
    M libcxx/include/module.modulemap.in
    M libcxx/modules/std/algorithm.inc
    M libcxx/test/libcxx/diagnostics/ranges.nodiscard_extensions.verify.cpp
    A libcxx/test/std/algorithms/alg.nonmodifying/alg.fold/left_folds.pass.cpp
    A libcxx/test/std/algorithms/alg.nonmodifying/alg.fold/requirements.compile.pass.cpp
    A libcxx/test/std/algorithms/algorithms.results/in_value_result.pass.cpp
    M libcxx/test/std/algorithms/algorithms.results/no_unique_address.compile.pass.cpp
    M libcxx/test/std/algorithms/ranges_result_alias_declarations.compile.pass.cpp
    M libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.input/input_iterator.compile.pass.cpp
    M libcxx/test/std/library/description/conventions/customization.point.object/niebloid.compile.pass.cpp
    M libcxx/test/std/ranges/range.adaptors/range.all/range.ref.view/borrowing.compile.pass.cpp
    A libcxx/test/support/invocable_with_telemetry.h
    A libcxx/test/support/maths.h
    M libcxx/test/support/test_range.h

  Log Message:
  -----------
  [libcxx] adds ranges::fold_left_with_iter and ranges::fold_left (#75259)

Notable things in this commit:

* refactors `__indirect_binary_left_foldable`, making it slightly
different (but equivalent) to _`indirect-binary-left-foldable`_, which
improves readability (a [patch to the Working Paper][patch] was made)
* omits `__cpo` namespace, since it is not required for implementing
niebloids (a cleanup should happen in 2024)
* puts tests ensuring invocable robustness and dangling correctness
inside the correctness testing to ensure that the algorithms' results
are still correct

[patch]: https://github.com/cplusplus/draft/pull/6734




More information about the All-commits mailing list