13 template<concepts::RandomAccessIterator It, concepts::SentinelFor<It> Sent,
typename Comp = function::Compare,
14 typename Proj = function::Identity>
16 constexpr auto operator()(It first, Sent last, Comp comp = {}, Proj
proj = {})
const -> It {
24 constexpr auto operator()(Con&&
container, Comp comp = {}, Proj
proj = {})
const
32 constexpr static void bubble_down(
auto first,
auto comp,
auto proj,
auto size,
decltype(
size) index) {
33 using IndexType =
decltype(
size);
36 auto left_index = 2 * (index + 1) - 1;
37 auto right_index = 2 * (index + 1);
45 return { maybe_index(left_index), maybe_index(right_index) };
49 auto [left_child, right_child] = child_indices(index);
70 index = largest_child;
74 constexpr static auto impl(
auto first,
auto comp,
auto proj,
auto size) {