[all-commits] [llvm/llvm-project] 207d4b: [libc++] [P0879] constexpr std::nth_element, and r...

Quuxplusone via All-commits all-commits at lists.llvm.org
Thu Jan 28 08:59:57 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 207d4be4d9d39fbb9aca30e5d5d11245db9bccc1
      https://github.com/llvm/llvm-project/commit/207d4be4d9d39fbb9aca30e5d5d11245db9bccc1
  Author: Arthur O'Dwyer <arthur.j.odwyer at gmail.com>
  Date:   2021-01-28 (Thu, 28 Jan 2021)

  Changed paths:
    M libcxx/include/algorithm
    M libcxx/test/std/algorithms/alg.sorting/alg.nth.element/nth_element.pass.cpp
    M libcxx/test/std/algorithms/alg.sorting/alg.nth.element/nth_element_comp.pass.cpp

  Log Message:
  -----------
  [libc++] [P0879] constexpr std::nth_element, and rewrite its tests.

This patch is more than just adding the `constexpr` keyword, because
the old code relied on `goto`, and `goto` is not constexpr-friendly.
Refactor to eliminate `goto`, and then mark it as constexpr in C++20.

I freely admit that the name `__nth_element_partloop` is bad;
I couldn't find any better name because I don't really know
what this loop is doing, conceptually. Vice versa, I think
`__nth_element_find_guard` has a decent name.

Now the only one we're still missing from P0879 is `sort`.

Differential Revision: https://reviews.llvm.org/D93557




More information about the All-commits mailing list