Coverage Report

Created: 2026-06-15 06:03

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/immer/immer/detail/rbts/position.hpp
Line
Count
Source
1
//
2
// immer: immutable data structures for C++
3
// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente
4
//
5
// This software is distributed under the Boost Software License, Version 1.0.
6
// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
7
//
8
9
#pragma once
10
11
#include <immer/config.hpp>
12
#include <immer/detail/rbts/bits.hpp>
13
14
#include <cassert>
15
#include <type_traits>
16
#include <utility>
17
18
namespace immer {
19
namespace detail {
20
namespace rbts {
21
22
template <typename Pos>
23
constexpr auto bits = std::decay_t<Pos>::node_t::bits;
24
25
template <typename Pos>
26
constexpr auto bits_leaf = std::decay_t<Pos>::node_t::bits_leaf;
27
28
template <typename Pos>
29
using node_type = typename std::decay<Pos>::type::node_t;
30
31
template <typename Pos>
32
using edit_type = typename std::decay<Pos>::type::node_t::edit_t;
33
34
template <typename NodeT>
35
struct empty_regular_pos
36
{
37
    using node_t = NodeT;
38
    node_t* node_;
39
40
0
    count_t count() const { return 0; }
41
439k
    node_t* node() const { return node_; }
42
    shift_t shift() const { return 0; }
43
    size_t size() const { return 0; }
44
45
    template <typename Visitor, typename... Args>
46
    void each(Visitor, Args&&...)
47
0
    {
48
0
    }
49
    template <typename Visitor, typename... Args>
50
    bool each_pred(Visitor, Args&&...)
51
    {
52
        return true;
53
    }
54
55
    template <typename Visitor, typename... Args>
56
    decltype(auto) visit(Visitor v, Args&&... args)
57
439k
    {
58
439k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
59
439k
    }
60
};
61
62
template <typename NodeT>
63
empty_regular_pos<NodeT> make_empty_regular_pos(NodeT* node)
64
439k
{
65
439k
    return {node};
66
439k
}
67
68
template <typename NodeT>
69
struct empty_leaf_pos
70
{
71
    using node_t = NodeT;
72
    node_t* node_;
73
74
10.1k
    count_t count() const { return 0; }
75
384k
    node_t* node() const { return node_; }
76
10.1k
    shift_t shift() const { return 0; }
77
    size_t size() const { return 0; }
78
79
    template <typename Visitor, typename... Args>
80
    decltype(auto) visit(Visitor v, Args&&... args)
81
384k
    {
82
384k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
83
384k
    }
84
};
85
86
template <typename NodeT>
87
empty_leaf_pos<NodeT> make_empty_leaf_pos(NodeT* node)
88
384k
{
89
384k
    assert(node);
90
384k
    return {node};
91
384k
}
92
93
template <typename NodeT>
94
struct leaf_pos
95
{
96
    static constexpr auto B  = NodeT::bits;
97
    static constexpr auto BL = NodeT::bits_leaf;
98
99
    using node_t = NodeT;
100
    node_t* node_;
101
    size_t size_;
102
103
331k
    count_t count() const { return index(size_ - 1) + 1; }
104
176k
    node_t* node() const { return node_; }
105
    size_t size() const { return size_; }
106
160k
    shift_t shift() const { return 0; }
107
342k
    count_t index(size_t idx) const { return idx & mask<BL>; }
108
    count_t subindex(size_t idx) const { return idx; }
109
110
    template <typename Visitor, typename... Args>
111
    decltype(auto) visit(Visitor v, Args&&... args)
112
13.5k
    {
113
13.5k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
114
13.5k
    }
decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor)
Line
Count
Source
112
2.32k
    {
113
2.32k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
114
2.32k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
112
707
    {
113
707
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
114
707
    }
decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&)
Line
Count
Source
112
1.67k
    {
113
1.67k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
114
1.67k
    }
decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&)
Line
Count
Source
112
432
    {
113
432
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
114
432
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&)
Line
Count
Source
112
1.37k
    {
113
1.37k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
114
1.37k
    }
decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
112
798
    {
113
798
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
114
798
    }
decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
112
2.52k
    {
113
2.52k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
114
2.52k
    }
decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
112
2.99k
    {
113
2.99k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
114
2.99k
    }
decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
112
714
    {
113
714
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
114
714
    }
115
};
116
117
template <typename NodeT>
118
leaf_pos<NodeT> make_leaf_pos(NodeT* node, size_t size)
119
173k
{
120
173k
    assert(node);
121
173k
    assert(size > 0);
122
173k
    return {node, size};
123
173k
}
124
125
template <typename NodeT>
126
struct leaf_sub_pos
127
{
128
    static constexpr auto B  = NodeT::bits;
129
    static constexpr auto BL = NodeT::bits_leaf;
130
131
    using node_t = NodeT;
132
    node_t* node_;
133
    count_t count_;
134
135
2.19M
    count_t count() const { return count_; }
136
1.78M
    node_t* node() const { return node_; }
137
940k
    size_t size() const { return count_; }
138
622k
    shift_t shift() const { return 0; }
139
37.5k
    count_t index(size_t idx) const { return idx & mask<BL>; }
140
    count_t subindex(size_t idx) const { return idx; }
141
142
    template <typename Visitor, typename... Args>
143
    decltype(auto) visit(Visitor v, Args&&... args)
144
2.71M
    {
145
2.71M
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
2.71M
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor)
Line
Count
Source
144
518k
    {
145
518k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
518k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
144
512
    {
145
512
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
512
    }
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
144
3.32k
    {
145
3.32k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
3.32k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&)
Line
Count
Source
144
734
    {
145
734
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
734
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&)
Line
Count
Source
144
2.76k
    {
145
2.76k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
2.76k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&)
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&)
Line
Count
Source
144
11.9k
    {
145
11.9k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
11.9k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
144
940k
    {
145
940k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
940k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
332k
    {
145
332k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
332k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
577
    {
145
577
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
577
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
783
    {
145
783
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
783
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
1.53k
    {
145
1.53k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
1.53k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
1.53k
    {
145
1.53k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
1.53k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
3.50k
    {
145
3.50k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
3.50k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
5.29k
    {
145
5.29k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
5.29k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
38.8k
    {
145
38.8k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
38.8k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
38.8k
    {
145
38.8k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
38.8k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&)
Line
Count
Source
144
3.54k
    {
145
3.54k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
3.54k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
144
2.41k
    {
145
2.41k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
2.41k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
144
1.61k
    {
145
1.61k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
1.61k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
144
4.54k
    {
145
4.54k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
4.54k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
144
6.21k
    {
145
6.21k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
6.21k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
144
608k
    {
145
608k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
608k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
940
    {
145
940
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
940
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
2.58k
    {
145
2.58k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
2.58k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
144
3.71k
    {
145
3.71k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
3.71k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
3.71k
    {
145
3.71k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
3.71k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
9.84k
    {
145
9.84k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
9.84k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
36.7k
    {
145
36.7k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
36.7k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
144
66.4k
    {
145
66.4k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
66.4k
    }
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
144
66.4k
    {
145
66.4k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
146
66.4k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
147
};
148
149
template <typename NodeT>
150
leaf_sub_pos<NodeT> make_leaf_sub_pos(NodeT* node, count_t count)
151
2.71M
{
152
2.71M
    assert(node);
153
2.71M
    assert(count <= branches<NodeT::bits_leaf>);
154
2.71M
    return {node, count};
155
2.71M
}
156
157
template <typename NodeT>
158
struct leaf_descent_pos
159
{
160
    static constexpr auto B  = NodeT::bits;
161
    static constexpr auto BL = NodeT::bits_leaf;
162
163
    using node_t = NodeT;
164
    node_t* node_;
165
166
    node_t* node() const { return node_; }
167
    shift_t shift() const { return 0; }
168
    count_t index(size_t idx) const { return idx & mask<BL>; }
169
170
    template <typename... Args>
171
    decltype(auto) descend(Args&&...)
172
    {
173
    }
174
175
    template <typename Visitor, typename... Args>
176
    decltype(auto) visit(Visitor v, Args&&... args)
177
    {
178
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
179
    }
180
};
181
182
template <typename NodeT>
183
leaf_descent_pos<NodeT> make_leaf_descent_pos(NodeT* node)
184
{
185
    assert(node);
186
    return {node};
187
}
188
189
template <typename NodeT>
190
struct full_leaf_pos
191
{
192
    static constexpr auto B  = NodeT::bits;
193
    static constexpr auto BL = NodeT::bits_leaf;
194
195
    using node_t = NodeT;
196
    node_t* node_;
197
198
332k
    count_t count() const { return branches<BL>; }
199
227k
    node_t* node() const { return node_; }
200
122k
    size_t size() const { return branches<BL>; }
201
60.3k
    shift_t shift() const { return 0; }
202
28.8k
    count_t index(size_t idx) const { return idx & mask<BL>; }
203
    count_t subindex(size_t idx) const { return idx; }
204
205
    template <typename Visitor, typename... Args>
206
    decltype(auto) visit(Visitor v, Args&&... args)
207
340k
    {
208
340k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
340k
    }
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor)
Line
Count
Source
207
6.28k
    {
208
6.28k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
6.28k
    }
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
207
1.33k
    {
208
1.33k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
1.33k
    }
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&)
Line
Count
Source
207
3.15k
    {
208
3.15k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
3.15k
    }
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&)
Line
Count
Source
207
1.27k
    {
208
1.27k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
1.27k
    }
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&&)
Line
Count
Source
207
4.33k
    {
208
4.33k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
4.33k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
207
122k
    {
208
122k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
122k
    }
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
207
21.8k
    {
208
21.8k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
21.8k
    }
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
207
1.36k
    {
208
1.36k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
1.36k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
207
8.80k
    {
208
8.80k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
8.80k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&)
Line
Count
Source
207
5.42k
    {
208
5.42k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
5.42k
    }
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
207
1.51k
    {
208
1.51k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
1.51k
    }
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
207
2.56k
    {
208
2.56k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
2.56k
    }
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
207
7.87k
    {
208
7.87k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
7.87k
    }
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
207
1.40k
    {
208
1.40k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
1.40k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
207
100k
    {
208
100k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
100k
    }
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
207
3.52k
    {
208
3.52k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
3.52k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
207
46.6k
    {
208
46.6k
        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
209
46.6k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
210
};
211
212
template <typename NodeT>
213
full_leaf_pos<NodeT> make_full_leaf_pos(NodeT* node)
214
334k
{
215
334k
    assert(node);
216
334k
    return {node};
217
334k
}
218
219
template <typename NodeT>
220
struct regular_pos
221
{
222
    static constexpr auto B  = NodeT::bits;
223
    static constexpr auto BL = NodeT::bits_leaf;
224
225
    using node_t = NodeT;
226
    node_t* node_;
227
    shift_t shift_;
228
    size_t size_;
229
230
7.43M
    count_t count() const { return index(size_ - 1) + 1; }
231
16.5M
    node_t* node() const { return node_; }
232
34.6M
    size_t size() const { return size_; }
233
16.5M
    shift_t shift() const { return shift_; }
234
25.6M
    count_t index(size_t idx) const { return (idx >> shift_) & mask<B>; }
235
    count_t subindex(size_t idx) const { return idx >> shift_; }
236
    size_t this_size() const
237
    {
238
        return ((size_ - 1) & ~(~size_t{} << (shift_ + B))) + 1;
239
    }
240
241
    template <typename Visitor, typename... Args>
242
    void each(Visitor v, Args&&... args)
243
0
    {
244
0
        return each_regular(*this, v, args...);
245
0
    }
246
247
    template <typename Visitor, typename... Args>
248
    bool each_pred(Visitor v, Args&&... args)
249
    {
250
        return each_pred_regular(*this, v, args...);
251
    }
252
253
    template <typename Visitor, typename... Args>
254
    bool each_pred_zip(Visitor v, node_t* other, Args&&... args)
255
    {
256
        return each_pred_zip_regular(*this, v, other, args...);
257
    }
258
259
    template <typename Visitor, typename... Args>
260
    bool each_pred_i(Visitor v, count_t i, count_t n, Args&&... args)
261
    {
262
        return each_pred_i_regular(*this, v, i, n, args...);
263
    }
264
265
    template <typename Visitor, typename... Args>
266
    bool each_pred_right(Visitor v, count_t start, Args&&... args)
267
    {
268
        return each_pred_right_regular(*this, v, start, args...);
269
    }
270
271
    template <typename Visitor, typename... Args>
272
    bool each_pred_left(Visitor v, count_t n, Args&&... args)
273
    {
274
        return each_pred_left_regular(*this, v, n, args...);
275
    }
276
277
    template <typename Visitor, typename... Args>
278
    void each_i(Visitor v, count_t i, count_t n, Args&&... args)
279
    {
280
        return each_i_regular(*this, v, i, n, args...);
281
    }
282
283
    template <typename Visitor, typename... Args>
284
    void each_right(Visitor v, count_t start, Args&&... args)
285
2.40k
    {
286
2.40k
        return each_right_regular(*this, v, start, args...);
287
2.40k
    }
288
289
    template <typename Visitor, typename... Args>
290
    void each_left(Visitor v, count_t n, Args&&... args)
291
    {
292
        return each_left_regular(*this, v, n, args...);
293
    }
294
295
    template <typename Visitor, typename... Args>
296
    decltype(auto) towards(Visitor v, size_t idx, Args&&... args)
297
    {
298
        return towards_oh_ch_regular(
299
            *this, v, idx, index(idx), count(), args...);
300
    }
301
302
    template <typename Visitor, typename... Args>
303
    decltype(auto)
304
    towards_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args)
305
8.91k
    {
306
8.91k
        return towards_oh_ch_regular(
307
8.91k
            *this, v, idx, offset_hint, count(), args...);
308
8.91k
    }
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int)
Line
Count
Source
305
2.46k
    {
306
2.46k
        return towards_oh_ch_regular(
307
2.46k
            *this, v, idx, offset_hint, count(), args...);
308
2.46k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
305
3.38k
    {
306
3.38k
        return towards_oh_ch_regular(
307
3.38k
            *this, v, idx, offset_hint, count(), args...);
308
3.38k
    }
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
305
3.06k
    {
306
3.06k
        return towards_oh_ch_regular(
307
3.06k
            *this, v, idx, offset_hint, count(), args...);
308
3.06k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
309
310
    template <typename Visitor, typename... Args>
311
    decltype(auto) towards_oh_ch(Visitor v,
312
                                 size_t idx,
313
                                 count_t offset_hint,
314
                                 count_t count_hint,
315
                                 Args&&... args)
316
3.13k
    {
317
3.13k
        return towards_oh_ch_regular(
318
3.13k
            *this, v, idx, offset_hint, count(), args...);
319
3.13k
    }
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_ch<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
316
1.16k
    {
317
1.16k
        return towards_oh_ch_regular(
318
1.16k
            *this, v, idx, offset_hint, count(), args...);
319
1.16k
    }
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_ch<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&&)
Line
Count
Source
316
1.96k
    {
317
1.96k
        return towards_oh_ch_regular(
318
1.96k
            *this, v, idx, offset_hint, count(), args...);
319
1.96k
    }
320
321
    template <typename Visitor, typename... Args>
322
    decltype(auto)
323
    towards_sub_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args)
324
    {
325
        return towards_sub_oh_regular(*this, v, idx, offset_hint, args...);
326
    }
327
328
    template <typename Visitor, typename... Args>
329
    decltype(auto) last_oh(Visitor v, count_t offset_hint, Args&&... args)
330
7.40M
    {
331
7.40M
        return last_oh_regular(*this, v, offset_hint, args...);
332
7.40M
    }
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned int, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
330
22.7k
    {
331
22.7k
        return last_oh_regular(*this, v, offset_hint, args...);
332
22.7k
    }
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
330
7.37M
    {
331
7.37M
        return last_oh_regular(*this, v, offset_hint, args...);
332
7.37M
    }
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
330
4.06k
    {
331
4.06k
        return last_oh_regular(*this, v, offset_hint, args...);
332
4.06k
    }
333
334
    template <typename Visitor, typename... Args>
335
    decltype(auto) visit(Visitor v, Args&&... args)
336
9.10M
    {
337
9.10M
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
338
9.10M
    }
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor)
Line
Count
Source
336
3.47k
    {
337
3.47k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
338
3.47k
    }
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
336
31.4k
    {
337
31.4k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
338
31.4k
    }
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
336
1.16k
    {
337
1.16k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
338
1.16k
    }
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&)
Line
Count
Source
336
2.46k
    {
337
2.46k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
338
2.46k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&)
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
336
9.04M
    {
337
9.04M
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
338
9.04M
    }
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
336
7.84k
    {
337
7.84k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
338
7.84k
    }
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&)
Line
Count
Source
336
1.96k
    {
337
1.96k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
338
1.96k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
336
3.88k
    {
337
3.88k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
338
3.88k
    }
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_right_visitor, unsigned int>(immer::detail::rbts::dec_right_visitor, unsigned int&&)
Line
Count
Source
336
1.05k
    {
337
1.05k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
338
1.05k
    }
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
336
2.56k
    {
337
2.56k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
338
2.56k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
339
};
340
341
template <typename Pos, typename Visitor, typename... Args>
342
void each_regular(Pos&& p, Visitor v, Args&&... args)
343
0
{
344
0
    constexpr auto B  = bits<Pos>;
345
0
    constexpr auto BL = bits_leaf<Pos>;
346
0
    auto n            = p.node()->inner();
347
0
    auto last         = p.count() - 1;
348
0
    auto e            = n + last;
349
0
    if (p.shift() == BL) {
350
0
        for (; n != e; ++n) {
351
0
            IMMER_PREFETCH(n + 1);
352
0
            make_full_leaf_pos(*n).visit(v, args...);
353
0
        }
354
0
        make_leaf_pos(*n, p.size()).visit(v, args...);
355
0
    } else {
356
0
        auto ss = p.shift() - B;
357
0
        for (; n != e; ++n)
358
0
            make_full_pos(*n, ss).visit(v, args...);
359
0
        make_regular_pos(*n, ss, p.size()).visit(v, args...);
360
0
    }
361
0
}
Unexecuted instantiation: void immer::detail::rbts::each_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor)
Unexecuted instantiation: void immer::detail::rbts::each_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor)
362
363
template <typename Pos, typename Visitor, typename... Args>
364
bool each_pred_regular(Pos&& p, Visitor v, Args&&... args)
365
{
366
    constexpr auto B  = bits<Pos>;
367
    constexpr auto BL = bits_leaf<Pos>;
368
    auto n            = p.node()->inner();
369
    auto last         = p.count() - 1;
370
    auto e            = n + last;
371
    if (p.shift() == BL) {
372
        for (; n != e; ++n) {
373
            IMMER_PREFETCH(n + 1);
374
            if (!make_full_leaf_pos(*n).visit(v, args...))
375
                return false;
376
        }
377
        return make_leaf_pos(*n, p.size()).visit(v, args...);
378
    } else {
379
        auto ss = p.shift() - B;
380
        for (; n != e; ++n)
381
            if (!make_full_pos(*n, ss).visit(v, args...))
382
                return false;
383
        return make_regular_pos(*n, ss, p.size()).visit(v, args...);
384
    }
385
}
386
387
template <typename Pos, typename Visitor, typename... Args>
388
bool each_pred_zip_regular(Pos&& p,
389
                           Visitor v,
390
                           node_type<Pos>* other,
391
                           Args&&... args)
392
{
393
    constexpr auto B  = bits<Pos>;
394
    constexpr auto BL = bits_leaf<Pos>;
395
396
    auto n    = p.node()->inner();
397
    auto n2   = other->inner();
398
    auto last = p.count() - 1;
399
    auto e    = n + last;
400
    if (p.shift() == BL) {
401
        for (; n != e; ++n, ++n2) {
402
            IMMER_PREFETCH(n + 1);
403
            IMMER_PREFETCH(n2 + 1);
404
            if (!make_full_leaf_pos(*n).visit(v, *n2, args...))
405
                return false;
406
        }
407
        return make_leaf_pos(*n, p.size()).visit(v, *n2, args...);
408
    } else {
409
        auto ss = p.shift() - B;
410
        for (; n != e; ++n, ++n2)
411
            if (!make_full_pos(*n, ss).visit(v, *n2, args...))
412
                return false;
413
        return make_regular_pos(*n, ss, p.size()).visit(v, *n2, args...);
414
    }
415
}
416
417
template <typename Pos, typename Visitor, typename... Args>
418
bool each_pred_i_regular(
419
    Pos&& p, Visitor v, count_t f, count_t l, Args&&... args)
420
{
421
    constexpr auto B  = bits<Pos>;
422
    constexpr auto BL = bits_leaf<Pos>;
423
424
    if (p.shift() == BL) {
425
        if (l > f) {
426
            if (l < p.count()) {
427
                auto n = p.node()->inner() + f;
428
                auto e = p.node()->inner() + l;
429
                for (; n < e; ++n) {
430
                    IMMER_PREFETCH(n + 1);
431
                    if (!make_full_leaf_pos(*n).visit(v, args...))
432
                        return false;
433
                }
434
            } else {
435
                auto n = p.node()->inner() + f;
436
                auto e = p.node()->inner() + l - 1;
437
                for (; n < e; ++n) {
438
                    IMMER_PREFETCH(n + 1);
439
                    if (!make_full_leaf_pos(*n).visit(v, args...))
440
                        return false;
441
                }
442
                if (!make_leaf_pos(*n, p.size()).visit(v, args...))
443
                    return false;
444
            }
445
        }
446
    } else {
447
        if (l > f) {
448
            auto ss = p.shift() - B;
449
            if (l < p.count()) {
450
                auto n = p.node()->inner() + f;
451
                auto e = p.node()->inner() + l;
452
                for (; n < e; ++n)
453
                    if (!make_full_pos(*n, ss).visit(v, args...))
454
                        return false;
455
            } else {
456
                auto n = p.node()->inner() + f;
457
                auto e = p.node()->inner() + l - 1;
458
                for (; n < e; ++n)
459
                    if (!make_full_pos(*n, ss).visit(v, args...))
460
                        return false;
461
                if (!make_regular_pos(*n, ss, p.size()).visit(v, args...))
462
                    return false;
463
            }
464
        }
465
    }
466
    return true;
467
}
468
469
template <typename Pos, typename Visitor, typename... Args>
470
bool each_pred_left_regular(Pos&& p, Visitor v, count_t last, Args&&... args)
471
{
472
    constexpr auto B  = bits<Pos>;
473
    constexpr auto BL = bits_leaf<Pos>;
474
    assert(last < p.count());
475
    if (p.shift() == BL) {
476
        auto n = p.node()->inner();
477
        auto e = n + last;
478
        for (; n != e; ++n) {
479
            IMMER_PREFETCH(n + 1);
480
            if (!make_full_leaf_pos(*n).visit(v, args...))
481
                return false;
482
        }
483
    } else {
484
        auto n  = p.node()->inner();
485
        auto e  = n + last;
486
        auto ss = p.shift() - B;
487
        for (; n != e; ++n)
488
            if (!make_full_pos(*n, ss).visit(v, args...))
489
                return false;
490
    }
491
    return true;
492
}
493
494
template <typename Pos, typename Visitor, typename... Args>
495
bool each_pred_right_regular(Pos&& p, Visitor v, count_t start, Args&&... args)
496
{
497
    constexpr auto B  = bits<Pos>;
498
    constexpr auto BL = bits_leaf<Pos>;
499
500
    if (p.shift() == BL) {
501
        auto n    = p.node()->inner() + start;
502
        auto last = p.count() - 1;
503
        auto e    = p.node()->inner() + last;
504
        if (n <= e) {
505
            for (; n != e; ++n) {
506
                IMMER_PREFETCH(n + 1);
507
                if (!make_full_leaf_pos(*n).visit(v, args...))
508
                    return false;
509
            }
510
            if (!make_leaf_pos(*n, p.size()).visit(v, args...))
511
                return false;
512
        }
513
    } else {
514
        auto n    = p.node()->inner() + start;
515
        auto last = p.count() - 1;
516
        auto e    = p.node()->inner() + last;
517
        auto ss   = p.shift() - B;
518
        if (n <= e) {
519
            for (; n != e; ++n)
520
                if (!make_full_pos(*n, ss).visit(v, args...))
521
                    return false;
522
            if (!make_regular_pos(*n, ss, p.size()).visit(v, args...))
523
                return false;
524
        }
525
    }
526
    return true;
527
}
528
529
template <typename Pos, typename Visitor, typename... Args>
530
void each_i_regular(Pos&& p, Visitor v, count_t f, count_t l, Args&&... args)
531
{
532
    constexpr auto B  = bits<Pos>;
533
    constexpr auto BL = bits_leaf<Pos>;
534
535
    if (p.shift() == BL) {
536
        if (l > f) {
537
            if (l < p.count()) {
538
                auto n = p.node()->inner() + f;
539
                auto e = p.node()->inner() + l;
540
                for (; n < e; ++n) {
541
                    IMMER_PREFETCH(n + 1);
542
                    make_full_leaf_pos(*n).visit(v, args...);
543
                }
544
            } else {
545
                auto n = p.node()->inner() + f;
546
                auto e = p.node()->inner() + l - 1;
547
                for (; n < e; ++n) {
548
                    IMMER_PREFETCH(n + 1);
549
                    make_full_leaf_pos(*n).visit(v, args...);
550
                }
551
                make_leaf_pos(*n, p.size()).visit(v, args...);
552
            }
553
        }
554
    } else {
555
        if (l > f) {
556
            auto ss = p.shift() - B;
557
            if (l < p.count()) {
558
                auto n = p.node()->inner() + f;
559
                auto e = p.node()->inner() + l;
560
                for (; n < e; ++n)
561
                    make_full_pos(*n, ss).visit(v, args...);
562
            } else {
563
                auto n = p.node()->inner() + f;
564
                auto e = p.node()->inner() + l - 1;
565
                for (; n < e; ++n)
566
                    make_full_pos(*n, ss).visit(v, args...);
567
                make_regular_pos(*n, ss, p.size()).visit(v, args...);
568
            }
569
        }
570
    }
571
}
572
573
template <typename Pos, typename Visitor, typename... Args>
574
void each_left_regular(Pos&& p, Visitor v, count_t last, Args&&... args)
575
353k
{
576
353k
    constexpr auto B  = bits<Pos>;
577
353k
    constexpr auto BL = bits_leaf<Pos>;
578
353k
    assert(last < p.count());
579
353k
    if (p.shift() == BL) {
580
114k
        auto n = p.node()->inner();
581
114k
        auto e = n + last;
582
255k
        for (; n != e; ++n) {
583
140k
            IMMER_PREFETCH(n + 1);
584
140k
            make_full_leaf_pos(*n).visit(v, args...);
585
140k
        }
586
238k
    } else {
587
238k
        auto n  = p.node()->inner();
588
238k
        auto e  = n + last;
589
238k
        auto ss = p.shift() - B;
590
623k
        for (; n != e; ++n)
591
384k
            make_full_pos(*n, ss).visit(v, args...);
592
238k
    }
593
353k
}
void immer::detail::rbts::each_left_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::concat_rebalance_plan_fill_visitor, unsigned int, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
575
176k
{
576
176k
    constexpr auto B  = bits<Pos>;
577
176k
    constexpr auto BL = bits_leaf<Pos>;
578
176k
    assert(last < p.count());
579
176k
    if (p.shift() == BL) {
580
57.2k
        auto n = p.node()->inner();
581
57.2k
        auto e = n + last;
582
127k
        for (; n != e; ++n) {
583
70.3k
            IMMER_PREFETCH(n + 1);
584
70.3k
            make_full_leaf_pos(*n).visit(v, args...);
585
70.3k
        }
586
119k
    } else {
587
119k
        auto n  = p.node()->inner();
588
119k
        auto e  = n + last;
589
119k
        auto ss = p.shift() - B;
590
311k
        for (; n != e; ++n)
591
192k
            make_full_pos(*n, ss).visit(v, args...);
592
119k
    }
593
176k
}
void immer::detail::rbts::each_left_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::concat_merger_visitor, unsigned int, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
575
21.3k
{
576
21.3k
    constexpr auto B  = bits<Pos>;
577
21.3k
    constexpr auto BL = bits_leaf<Pos>;
578
21.3k
    assert(last < p.count());
579
21.3k
    if (p.shift() == BL) {
580
10.3k
        auto n = p.node()->inner();
581
10.3k
        auto e = n + last;
582
17.6k
        for (; n != e; ++n) {
583
7.35k
            IMMER_PREFETCH(n + 1);
584
7.35k
            make_full_leaf_pos(*n).visit(v, args...);
585
7.35k
        }
586
11.0k
    } else {
587
11.0k
        auto n  = p.node()->inner();
588
11.0k
        auto e  = n + last;
589
11.0k
        auto ss = p.shift() - B;
590
24.3k
        for (; n != e; ++n)
591
13.3k
            make_full_pos(*n, ss).visit(v, args...);
592
11.0k
    }
593
21.3k
}
void immer::detail::rbts::each_left_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::concat_merger_mut_visitor, unsigned int, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
575
155k
{
576
155k
    constexpr auto B  = bits<Pos>;
577
155k
    constexpr auto BL = bits_leaf<Pos>;
578
155k
    assert(last < p.count());
579
155k
    if (p.shift() == BL) {
580
46.9k
        auto n = p.node()->inner();
581
46.9k
        auto e = n + last;
582
109k
        for (; n != e; ++n) {
583
62.9k
            IMMER_PREFETCH(n + 1);
584
62.9k
            make_full_leaf_pos(*n).visit(v, args...);
585
62.9k
        }
586
108k
    } else {
587
108k
        auto n  = p.node()->inner();
588
108k
        auto e  = n + last;
589
108k
        auto ss = p.shift() - B;
590
287k
        for (; n != e; ++n)
591
178k
            make_full_pos(*n, ss).visit(v, args...);
592
108k
    }
593
155k
}
594
595
template <typename Pos, typename Visitor, typename... Args>
596
void each_right_regular(Pos&& p, Visitor v, count_t start, Args&&... args)
597
7.59k
{
598
7.59k
    constexpr auto B  = bits<Pos>;
599
7.59k
    constexpr auto BL = bits_leaf<Pos>;
600
601
7.59k
    if (p.shift() == BL) {
602
2.64k
        auto n    = p.node()->inner() + start;
603
2.64k
        auto last = p.count() - 1;
604
2.64k
        auto e    = p.node()->inner() + last;
605
2.64k
        if (n <= e) {
606
1.59k
            for (; n != e; ++n) {
607
399
                IMMER_PREFETCH(n + 1);
608
399
                make_full_leaf_pos(*n).visit(v, args...);
609
399
            }
610
1.19k
            make_leaf_pos(*n, p.size()).visit(v, args...);
611
1.19k
        }
612
4.94k
    } else {
613
4.94k
        auto n    = p.node()->inner() + start;
614
4.94k
        auto last = p.count() - 1;
615
4.94k
        auto e    = p.node()->inner() + last;
616
4.94k
        auto ss   = p.shift() - B;
617
4.94k
        if (n <= e) {
618
3.47k
            for (; n != e; ++n)
619
1.37k
                make_full_pos(*n, ss).visit(v, args...);
620
2.09k
            make_regular_pos(*n, ss, p.size()).visit(v, args...);
621
2.09k
        }
622
4.94k
    }
623
7.59k
}
void immer::detail::rbts::each_right_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor, unsigned int)
Line
Count
Source
597
2.40k
{
598
2.40k
    constexpr auto B  = bits<Pos>;
599
2.40k
    constexpr auto BL = bits_leaf<Pos>;
600
601
2.40k
    if (p.shift() == BL) {
602
1.21k
        auto n    = p.node()->inner() + start;
603
1.21k
        auto last = p.count() - 1;
604
1.21k
        auto e    = p.node()->inner() + last;
605
1.21k
        if (n <= e) {
606
645
            for (; n != e; ++n) {
607
194
                IMMER_PREFETCH(n + 1);
608
194
                make_full_leaf_pos(*n).visit(v, args...);
609
194
            }
610
451
            make_leaf_pos(*n, p.size()).visit(v, args...);
611
451
        }
612
1.21k
    } else {
613
1.18k
        auto n    = p.node()->inner() + start;
614
1.18k
        auto last = p.count() - 1;
615
1.18k
        auto e    = p.node()->inner() + last;
616
1.18k
        auto ss   = p.shift() - B;
617
1.18k
        if (n <= e) {
618
1.22k
            for (; n != e; ++n)
619
612
                make_full_pos(*n, ss).visit(v, args...);
620
617
            make_regular_pos(*n, ss, p.size()).visit(v, args...);
621
617
        }
622
1.18k
    }
623
2.40k
}
void immer::detail::rbts::each_right_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor, unsigned int)
Line
Count
Source
597
5.19k
{
598
5.19k
    constexpr auto B  = bits<Pos>;
599
5.19k
    constexpr auto BL = bits_leaf<Pos>;
600
601
5.19k
    if (p.shift() == BL) {
602
1.43k
        auto n    = p.node()->inner() + start;
603
1.43k
        auto last = p.count() - 1;
604
1.43k
        auto e    = p.node()->inner() + last;
605
1.43k
        if (n <= e) {
606
951
            for (; n != e; ++n) {
607
205
                IMMER_PREFETCH(n + 1);
608
205
                make_full_leaf_pos(*n).visit(v, args...);
609
205
            }
610
746
            make_leaf_pos(*n, p.size()).visit(v, args...);
611
746
        }
612
3.75k
    } else {
613
3.75k
        auto n    = p.node()->inner() + start;
614
3.75k
        auto last = p.count() - 1;
615
3.75k
        auto e    = p.node()->inner() + last;
616
3.75k
        auto ss   = p.shift() - B;
617
3.75k
        if (n <= e) {
618
2.24k
            for (; n != e; ++n)
619
767
                make_full_pos(*n, ss).visit(v, args...);
620
1.48k
            make_regular_pos(*n, ss, p.size()).visit(v, args...);
621
1.48k
        }
622
3.75k
    }
623
5.19k
}
624
625
template <typename Pos, typename Visitor, typename... Args>
626
decltype(auto) towards_oh_ch_regular(Pos&& p,
627
                                     Visitor v,
628
                                     size_t idx,
629
                                     count_t offset_hint,
630
                                     count_t count_hint,
631
                                     Args&&... args)
632
47.8k
{
633
47.8k
    constexpr auto B  = bits<Pos>;
634
47.8k
    constexpr auto BL = bits_leaf<Pos>;
635
47.8k
    assert(offset_hint == p.index(idx));
636
47.8k
    assert(count_hint == p.count());
637
47.8k
    auto is_leaf = p.shift() == BL;
638
47.8k
    auto child   = p.node()->inner()[offset_hint];
639
47.8k
    auto is_full = offset_hint + 1 != count_hint;
640
47.8k
    return is_full
641
47.8k
               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
642
24.5k
                          : make_full_pos(child, p.shift() - B)
643
16.0k
                                .visit(v, idx, args...))
644
47.8k
               : (is_leaf
645
23.2k
                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
646
23.2k
                      : make_regular_pos(child, p.shift() - B, p.size())
647
12.0k
                            .visit(v, idx, args...));
648
47.8k
}
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
632
2.03k
{
633
2.03k
    constexpr auto B  = bits<Pos>;
634
2.03k
    constexpr auto BL = bits_leaf<Pos>;
635
2.03k
    assert(offset_hint == p.index(idx));
636
2.03k
    assert(count_hint == p.count());
637
2.03k
    auto is_leaf = p.shift() == BL;
638
2.03k
    auto child   = p.node()->inner()[offset_hint];
639
2.03k
    auto is_full = offset_hint + 1 != count_hint;
640
2.03k
    return is_full
641
2.03k
               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
642
889
                          : make_full_pos(child, p.shift() - B)
643
574
                                .visit(v, idx, args...))
644
2.03k
               : (is_leaf
645
1.14k
                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
646
1.14k
                      : make_regular_pos(child, p.shift() - B, p.size())
647
773
                            .visit(v, idx, args...));
648
2.03k
}
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
632
1.16k
{
633
1.16k
    constexpr auto B  = bits<Pos>;
634
1.16k
    constexpr auto BL = bits_leaf<Pos>;
635
1.16k
    assert(offset_hint == p.index(idx));
636
1.16k
    assert(count_hint == p.count());
637
1.16k
    auto is_leaf = p.shift() == BL;
638
1.16k
    auto child   = p.node()->inner()[offset_hint];
639
1.16k
    auto is_full = offset_hint + 1 != count_hint;
640
1.16k
    return is_full
641
1.16k
               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
642
442
                          : make_full_pos(child, p.shift() - B)
643
204
                                .visit(v, idx, args...))
644
1.16k
               : (is_leaf
645
726
                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
646
726
                      : make_regular_pos(child, p.shift() - B, p.size())
647
395
                            .visit(v, idx, args...));
648
1.16k
}
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int, unsigned int)
Line
Count
Source
632
3.74k
{
633
3.74k
    constexpr auto B  = bits<Pos>;
634
3.74k
    constexpr auto BL = bits_leaf<Pos>;
635
3.74k
    assert(offset_hint == p.index(idx));
636
3.74k
    assert(count_hint == p.count());
637
3.74k
    auto is_leaf = p.shift() == BL;
638
3.74k
    auto child   = p.node()->inner()[offset_hint];
639
3.74k
    auto is_full = offset_hint + 1 != count_hint;
640
3.74k
    return is_full
641
3.74k
               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
642
1.39k
                          : make_full_pos(child, p.shift() - B)
643
731
                                .visit(v, idx, args...))
644
3.74k
               : (is_leaf
645
2.34k
                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
646
2.34k
                      : make_regular_pos(child, p.shift() - B, p.size())
647
1.65k
                            .visit(v, idx, args...));
648
3.74k
}
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int, unsigned int)
Line
Count
Source
632
2.46k
{
633
2.46k
    constexpr auto B  = bits<Pos>;
634
2.46k
    constexpr auto BL = bits_leaf<Pos>;
635
2.46k
    assert(offset_hint == p.index(idx));
636
2.46k
    assert(count_hint == p.count());
637
2.46k
    auto is_leaf = p.shift() == BL;
638
2.46k
    auto child   = p.node()->inner()[offset_hint];
639
2.46k
    auto is_full = offset_hint + 1 != count_hint;
640
2.46k
    return is_full
641
2.46k
               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
642
675
                          : make_full_pos(child, p.shift() - B)
643
213
                                .visit(v, idx, args...))
644
2.46k
               : (is_leaf
645
1.79k
                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
646
1.79k
                      : make_regular_pos(child, p.shift() - B, p.size())
647
812
                            .visit(v, idx, args...));
648
2.46k
}
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int, unsigned int)
Line
Count
Source
632
2.79k
{
633
2.79k
    constexpr auto B  = bits<Pos>;
634
2.79k
    constexpr auto BL = bits_leaf<Pos>;
635
2.79k
    assert(offset_hint == p.index(idx));
636
2.79k
    assert(count_hint == p.count());
637
2.79k
    auto is_leaf = p.shift() == BL;
638
2.79k
    auto child   = p.node()->inner()[offset_hint];
639
2.79k
    auto is_full = offset_hint + 1 != count_hint;
640
2.79k
    return is_full
641
2.79k
               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
642
2.35k
                          : make_full_pos(child, p.shift() - B)
643
1.64k
                                .visit(v, idx, args...))
644
2.79k
               : (is_leaf
645
432
                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
646
432
                      : make_regular_pos(child, p.shift() - B, p.size())
647
0
                            .visit(v, idx, args...));
648
2.79k
}
Unexecuted instantiation: decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int, unsigned int)
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&)
Line
Count
Source
632
6.79k
{
633
6.79k
    constexpr auto B  = bits<Pos>;
634
6.79k
    constexpr auto BL = bits_leaf<Pos>;
635
6.79k
    assert(offset_hint == p.index(idx));
636
6.79k
    assert(count_hint == p.count());
637
6.79k
    auto is_leaf = p.shift() == BL;
638
6.79k
    auto child   = p.node()->inner()[offset_hint];
639
6.79k
    auto is_full = offset_hint + 1 != count_hint;
640
6.79k
    return is_full
641
6.79k
               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
642
4.73k
                          : make_full_pos(child, p.shift() - B)
643
3.80k
                                .visit(v, idx, args...))
644
6.79k
               : (is_leaf
645
2.05k
                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
646
2.05k
                      : make_regular_pos(child, p.shift() - B, p.size())
647
1.38k
                            .visit(v, idx, args...));
648
6.79k
}
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&)
Line
Count
Source
632
1.96k
{
633
1.96k
    constexpr auto B  = bits<Pos>;
634
1.96k
    constexpr auto BL = bits_leaf<Pos>;
635
1.96k
    assert(offset_hint == p.index(idx));
636
1.96k
    assert(count_hint == p.count());
637
1.96k
    auto is_leaf = p.shift() == BL;
638
1.96k
    auto child   = p.node()->inner()[offset_hint];
639
1.96k
    auto is_full = offset_hint + 1 != count_hint;
640
1.96k
    return is_full
641
1.96k
               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
642
686
                          : make_full_pos(child, p.shift() - B)
643
208
                                .visit(v, idx, args...))
644
1.96k
               : (is_leaf
645
1.28k
                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
646
1.28k
                      : make_regular_pos(child, p.shift() - B, p.size())
647
588
                            .visit(v, idx, args...));
648
1.96k
}
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
632
3.30k
{
633
3.30k
    constexpr auto B  = bits<Pos>;
634
3.30k
    constexpr auto BL = bits_leaf<Pos>;
635
3.30k
    assert(offset_hint == p.index(idx));
636
3.30k
    assert(count_hint == p.count());
637
3.30k
    auto is_leaf = p.shift() == BL;
638
3.30k
    auto child   = p.node()->inner()[offset_hint];
639
3.30k
    auto is_full = offset_hint + 1 != count_hint;
640
3.30k
    return is_full
641
3.30k
               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
642
2.50k
                          : make_full_pos(child, p.shift() - B)
643
1.84k
                                .visit(v, idx, args...))
644
3.30k
               : (is_leaf
645
798
                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
646
798
                      : make_regular_pos(child, p.shift() - B, p.size())
647
0
                            .visit(v, idx, args...));
648
3.30k
}
Unexecuted instantiation: decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
632
3.38k
{
633
3.38k
    constexpr auto B  = bits<Pos>;
634
3.38k
    constexpr auto BL = bits_leaf<Pos>;
635
3.38k
    assert(offset_hint == p.index(idx));
636
3.38k
    assert(count_hint == p.count());
637
3.38k
    auto is_leaf = p.shift() == BL;
638
3.38k
    auto child   = p.node()->inner()[offset_hint];
639
3.38k
    auto is_full = offset_hint + 1 != count_hint;
640
3.38k
    return is_full
641
3.38k
               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
642
1.46k
                          : make_full_pos(child, p.shift() - B)
643
626
                                .visit(v, idx, args...))
644
3.38k
               : (is_leaf
645
1.91k
                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
646
1.91k
                      : make_regular_pos(child, p.shift() - B, p.size())
647
657
                            .visit(v, idx, args...));
648
3.38k
}
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
632
3.06k
{
633
3.06k
    constexpr auto B  = bits<Pos>;
634
3.06k
    constexpr auto BL = bits_leaf<Pos>;
635
3.06k
    assert(offset_hint == p.index(idx));
636
3.06k
    assert(count_hint == p.count());
637
3.06k
    auto is_leaf = p.shift() == BL;
638
3.06k
    auto child   = p.node()->inner()[offset_hint];
639
3.06k
    auto is_full = offset_hint + 1 != count_hint;
640
3.06k
    return is_full
641
3.06k
               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
642
804
                          : make_full_pos(child, p.shift() - B)
643
286
                                .visit(v, idx, args...))
644
3.06k
               : (is_leaf
645
2.25k
                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
646
2.25k
                      : make_regular_pos(child, p.shift() - B, p.size())
647
708
                            .visit(v, idx, args...));
648
3.06k
}
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
632
6.92k
{
633
6.92k
    constexpr auto B  = bits<Pos>;
634
6.92k
    constexpr auto BL = bits_leaf<Pos>;
635
6.92k
    assert(offset_hint == p.index(idx));
636
6.92k
    assert(count_hint == p.count());
637
6.92k
    auto is_leaf = p.shift() == BL;
638
6.92k
    auto child   = p.node()->inner()[offset_hint];
639
6.92k
    auto is_full = offset_hint + 1 != count_hint;
640
6.92k
    return is_full
641
6.92k
               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
642
2.43k
                          : make_full_pos(child, p.shift() - B)
643
1.65k
                                .visit(v, idx, args...))
644
6.92k
               : (is_leaf
645
4.49k
                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
646
4.49k
                      : make_regular_pos(child, p.shift() - B, p.size())
647
3.22k
                            .visit(v, idx, args...));
648
6.92k
}
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
632
6.40k
{
633
6.40k
    constexpr auto B  = bits<Pos>;
634
6.40k
    constexpr auto BL = bits_leaf<Pos>;
635
6.40k
    assert(offset_hint == p.index(idx));
636
6.40k
    assert(count_hint == p.count());
637
6.40k
    auto is_leaf = p.shift() == BL;
638
6.40k
    auto child   = p.node()->inner()[offset_hint];
639
6.40k
    auto is_full = offset_hint + 1 != count_hint;
640
6.40k
    return is_full
641
6.40k
               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
642
3.10k
                          : make_full_pos(child, p.shift() - B)
643
1.84k
                                .visit(v, idx, args...))
644
6.40k
               : (is_leaf
645
3.30k
                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
646
3.30k
                      : make_regular_pos(child, p.shift() - B, p.size())
647
1.85k
                            .visit(v, idx, args...));
648
6.40k
}
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
632
3.75k
{
633
3.75k
    constexpr auto B  = bits<Pos>;
634
3.75k
    constexpr auto BL = bits_leaf<Pos>;
635
3.75k
    assert(offset_hint == p.index(idx));
636
3.75k
    assert(count_hint == p.count());
637
3.75k
    auto is_leaf = p.shift() == BL;
638
3.75k
    auto child   = p.node()->inner()[offset_hint];
639
3.75k
    auto is_full = offset_hint + 1 != count_hint;
640
3.75k
    return is_full
641
3.75k
               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
642
3.03k
                          : make_full_pos(child, p.shift() - B)
643
2.40k
                                .visit(v, idx, args...))
644
3.75k
               : (is_leaf
645
714
                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
646
714
                      : make_regular_pos(child, p.shift() - B, p.size())
647
0
                            .visit(v, idx, args...));
648
3.75k
}
Unexecuted instantiation: decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
649
650
template <typename Pos, typename Visitor, typename... Args>
651
decltype(auto) towards_sub_oh_regular(
652
    Pos&& p, Visitor v, size_t idx, count_t offset_hint, Args&&... args)
653
4.68k
{
654
4.68k
    constexpr auto B  = bits<Pos>;
655
4.68k
    constexpr auto BL = bits_leaf<Pos>;
656
4.68k
    assert(offset_hint == p.index(idx));
657
4.68k
    auto is_leaf = p.shift() == BL;
658
4.68k
    auto child   = p.node()->inner()[offset_hint];
659
4.68k
    auto lsize   = offset_hint << p.shift();
660
4.68k
    auto size    = p.this_size();
661
4.68k
    auto is_full = (size - lsize) >= (size_t{1} << p.shift());
662
4.68k
    return is_full
663
4.68k
               ? (is_leaf
664
4.33k
                      ? make_full_leaf_pos(child).visit(v, idx - lsize, args...)
665
4.33k
                      : make_full_pos(child, p.shift() - B)
666
2.37k
                            .visit(v, idx - lsize, args...))
667
4.68k
               : (is_leaf
668
351
                      ? make_leaf_sub_pos(child, size - lsize)
669
0
                            .visit(v, idx - lsize, args...)
670
351
                      : make_regular_sub_pos(child, p.shift() - B, size - lsize)
671
351
                            .visit(v, idx - lsize, args...));
672
4.68k
}
decltype(auto) immer::detail::rbts::towards_sub_oh_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int)
Line
Count
Source
653
3.39k
{
654
3.39k
    constexpr auto B  = bits<Pos>;
655
3.39k
    constexpr auto BL = bits_leaf<Pos>;
656
3.39k
    assert(offset_hint == p.index(idx));
657
3.39k
    auto is_leaf = p.shift() == BL;
658
3.39k
    auto child   = p.node()->inner()[offset_hint];
659
3.39k
    auto lsize   = offset_hint << p.shift();
660
3.39k
    auto size    = p.this_size();
661
3.39k
    auto is_full = (size - lsize) >= (size_t{1} << p.shift());
662
3.39k
    return is_full
663
3.39k
               ? (is_leaf
664
3.39k
                      ? make_full_leaf_pos(child).visit(v, idx - lsize, args...)
665
3.39k
                      : make_full_pos(child, p.shift() - B)
666
1.42k
                            .visit(v, idx - lsize, args...))
667
3.39k
               : (is_leaf
668
0
                      ? make_leaf_sub_pos(child, size - lsize)
669
0
                            .visit(v, idx - lsize, args...)
670
0
                      : make_regular_sub_pos(child, p.shift() - B, size - lsize)
671
0
                            .visit(v, idx - lsize, args...));
672
3.39k
}
decltype(auto) immer::detail::rbts::towards_sub_oh_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int)
Line
Count
Source
653
1.29k
{
654
1.29k
    constexpr auto B  = bits<Pos>;
655
1.29k
    constexpr auto BL = bits_leaf<Pos>;
656
1.29k
    assert(offset_hint == p.index(idx));
657
1.29k
    auto is_leaf = p.shift() == BL;
658
1.29k
    auto child   = p.node()->inner()[offset_hint];
659
1.29k
    auto lsize   = offset_hint << p.shift();
660
1.29k
    auto size    = p.this_size();
661
1.29k
    auto is_full = (size - lsize) >= (size_t{1} << p.shift());
662
1.29k
    return is_full
663
1.29k
               ? (is_leaf
664
948
                      ? make_full_leaf_pos(child).visit(v, idx - lsize, args...)
665
948
                      : make_full_pos(child, p.shift() - B)
666
948
                            .visit(v, idx - lsize, args...))
667
1.29k
               : (is_leaf
668
351
                      ? make_leaf_sub_pos(child, size - lsize)
669
0
                            .visit(v, idx - lsize, args...)
670
351
                      : make_regular_sub_pos(child, p.shift() - B, size - lsize)
671
351
                            .visit(v, idx - lsize, args...));
672
1.29k
}
673
674
template <typename Pos, typename Visitor, typename... Args>
675
decltype(auto)
676
last_oh_regular(Pos&& p, Visitor v, count_t offset_hint, Args&&... args)
677
9.08M
{
678
9.08M
    assert(offset_hint == p.count() - 1);
679
9.08M
    constexpr auto B  = bits<Pos>;
680
9.08M
    constexpr auto BL = bits_leaf<Pos>;
681
9.08M
    auto child        = p.node()->inner()[offset_hint];
682
9.08M
    auto is_leaf      = p.shift() == BL;
683
9.08M
    return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...)
684
9.08M
                   : make_regular_pos(child, p.shift() - B, p.size())
685
9.08M
                         .visit(v, args...);
686
9.08M
}
decltype(auto) immer::detail::rbts::last_oh_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned int, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
677
8.77k
{
678
8.77k
    assert(offset_hint == p.count() - 1);
679
8.77k
    constexpr auto B  = bits<Pos>;
680
8.77k
    constexpr auto BL = bits_leaf<Pos>;
681
8.77k
    auto child        = p.node()->inner()[offset_hint];
682
8.77k
    auto is_leaf      = p.shift() == BL;
683
8.77k
    return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...)
684
8.77k
                   : make_regular_pos(child, p.shift() - B, p.size())
685
8.77k
                         .visit(v, args...);
686
8.77k
}
decltype(auto) immer::detail::rbts::last_oh_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned int, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
677
22.7k
{
678
22.7k
    assert(offset_hint == p.count() - 1);
679
22.7k
    constexpr auto B  = bits<Pos>;
680
22.7k
    constexpr auto BL = bits_leaf<Pos>;
681
22.7k
    auto child        = p.node()->inner()[offset_hint];
682
22.7k
    auto is_leaf      = p.shift() == BL;
683
22.7k
    return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...)
684
22.7k
                   : make_regular_pos(child, p.shift() - B, p.size())
685
22.7k
                         .visit(v, args...);
686
22.7k
}
decltype(auto) immer::detail::rbts::last_oh_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
677
1.66M
{
678
1.66M
    assert(offset_hint == p.count() - 1);
679
1.66M
    constexpr auto B  = bits<Pos>;
680
1.66M
    constexpr auto BL = bits_leaf<Pos>;
681
1.66M
    auto child        = p.node()->inner()[offset_hint];
682
1.66M
    auto is_leaf      = p.shift() == BL;
683
1.66M
    return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...)
684
1.66M
                   : make_regular_pos(child, p.shift() - B, p.size())
685
1.66M
                         .visit(v, args...);
686
1.66M
}
decltype(auto) immer::detail::rbts::last_oh_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
677
7.37M
{
678
7.37M
    assert(offset_hint == p.count() - 1);
679
7.37M
    constexpr auto B  = bits<Pos>;
680
7.37M
    constexpr auto BL = bits_leaf<Pos>;
681
7.37M
    auto child        = p.node()->inner()[offset_hint];
682
7.37M
    auto is_leaf      = p.shift() == BL;
683
7.37M
    return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...)
684
7.37M
                   : make_regular_pos(child, p.shift() - B, p.size())
685
7.37M
                         .visit(v, args...);
686
7.37M
}
decltype(auto) immer::detail::rbts::last_oh_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
677
4.06k
{
678
4.06k
    assert(offset_hint == p.count() - 1);
679
4.06k
    constexpr auto B  = bits<Pos>;
680
4.06k
    constexpr auto BL = bits_leaf<Pos>;
681
4.06k
    auto child        = p.node()->inner()[offset_hint];
682
4.06k
    auto is_leaf      = p.shift() == BL;
683
4.06k
    return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...)
684
4.06k
                   : make_regular_pos(child, p.shift() - B, p.size())
685
4.06k
                         .visit(v, args...);
686
4.06k
}
decltype(auto) immer::detail::rbts::last_oh_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
677
3.77k
{
678
3.77k
    assert(offset_hint == p.count() - 1);
679
3.77k
    constexpr auto B  = bits<Pos>;
680
3.77k
    constexpr auto BL = bits_leaf<Pos>;
681
3.77k
    auto child        = p.node()->inner()[offset_hint];
682
3.77k
    auto is_leaf      = p.shift() == BL;
683
3.77k
    return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...)
684
3.77k
                   : make_regular_pos(child, p.shift() - B, p.size())
685
3.77k
                         .visit(v, args...);
686
3.77k
}
687
688
template <typename NodeT>
689
regular_pos<NodeT> make_regular_pos(NodeT* node, shift_t shift, size_t size)
690
9.10M
{
691
9.10M
    assert(node);
692
9.10M
    assert(shift >= NodeT::bits_leaf);
693
9.10M
    assert(size > 0);
694
9.10M
    return {node, shift, size};
695
9.10M
}
696
697
struct null_sub_pos
698
{
699
499k
    auto node() const { return nullptr; }
700
701
    template <typename Visitor, typename... Args>
702
    void each_sub(Visitor, Args&&...)
703
    {
704
    }
705
    template <typename Visitor, typename... Args>
706
    void each_right_sub(Visitor, Args&&...)
707
870k
    {
708
870k
    }
void immer::detail::rbts::null_sub_pos::each_right_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
707
435k
    {
708
435k
    }
void immer::detail::rbts::null_sub_pos::each_right_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
707
6.91k
    {
708
6.91k
    }
void immer::detail::rbts::null_sub_pos::each_right_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
707
428k
    {
708
428k
    }
709
    template <typename Visitor, typename... Args>
710
    void each_left_sub(Visitor, Args&&...)
711
166k
    {
712
166k
    }
void immer::detail::rbts::null_sub_pos::each_left_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
711
83.1k
    {
712
83.1k
    }
void immer::detail::rbts::null_sub_pos::each_left_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
711
12.0k
    {
712
12.0k
    }
void immer::detail::rbts::null_sub_pos::each_left_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
711
71.1k
    {
712
71.1k
    }
713
    template <typename Visitor, typename... Args>
714
    void visit(Visitor, Args&&...)
715
    {
716
    }
717
};
718
719
template <typename NodeT>
720
struct singleton_regular_sub_pos
721
{
722
    // this is a fake regular pos made out of a single child... useful
723
    // to treat a single leaf node as a whole tree
724
725
    static constexpr auto B  = NodeT::bits;
726
    static constexpr auto BL = NodeT::bits_leaf;
727
728
    using node_t = NodeT;
729
    node_t* leaf_;
730
    count_t count_;
731
732
0
    count_t count() const { return 1; }
733
7.23k
    node_t* node() const { return nullptr; }
734
    size_t size() const { return count_; }
735
32.4k
    shift_t shift() const { return BL; }
736
    count_t index(size_t idx) const { return 0; }
737
    count_t subindex(size_t idx) const { return 0; }
738
    size_t size_before(count_t offset) const { return 0; }
739
    size_t this_size() const { return count_; }
740
    size_t size(count_t offset) { return count_; }
741
742
    template <typename Visitor, typename... Args>
743
    void each_left_sub(Visitor v, Args&&... args)
744
20.2k
    {
745
20.2k
    }
void immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
744
10.1k
    {
745
10.1k
    }
void immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
744
2.89k
    {
745
2.89k
    }
void immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
744
7.23k
    {
745
7.23k
    }
746
    template <typename Visitor, typename... Args>
747
    void each(Visitor v, Args&&... args)
748
    {
749
    }
750
751
    template <typename Visitor, typename... Args>
752
    decltype(auto) last_sub(Visitor v, Args&&... args)
753
10.1k
    {
754
10.1k
        return make_leaf_sub_pos(leaf_, count_).visit(v, args...);
755
10.1k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
753
577
    {
754
577
        return make_leaf_sub_pos(leaf_, count_).visit(v, args...);
755
577
    }
decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
753
783
    {
754
783
        return make_leaf_sub_pos(leaf_, count_).visit(v, args...);
755
783
    }
decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
753
1.53k
    {
754
1.53k
        return make_leaf_sub_pos(leaf_, count_).visit(v, args...);
755
1.53k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Unexecuted instantiation: decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
753
940
    {
754
940
        return make_leaf_sub_pos(leaf_, count_).visit(v, args...);
755
940
    }
decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
753
2.58k
    {
754
2.58k
        return make_leaf_sub_pos(leaf_, count_).visit(v, args...);
755
2.58k
    }
decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
753
3.71k
    {
754
3.71k
        return make_leaf_sub_pos(leaf_, count_).visit(v, args...);
755
3.71k
    }
756
757
    template <typename Visitor, typename... Args>
758
    decltype(auto) visit(Visitor v, Args&&... args)
759
10.1k
    {
760
10.1k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
761
10.1k
    }
decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&)
Line
Count
Source
759
2.89k
    {
760
2.89k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
761
2.89k
    }
decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&)
Line
Count
Source
759
7.23k
    {
760
7.23k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
761
7.23k
    }
762
};
763
764
template <typename NodeT>
765
auto make_singleton_regular_sub_pos(NodeT* leaf, count_t count)
766
10.1k
{
767
10.1k
    assert(leaf);
768
10.1k
    IMMER_ASSERT_TAGGED(leaf->kind() == NodeT::kind_t::leaf);
769
10.1k
    assert(count > 0);
770
10.1k
    return singleton_regular_sub_pos<NodeT>{leaf, count};
771
10.1k
}
772
773
template <typename NodeT>
774
struct regular_sub_pos
775
{
776
    static constexpr auto B  = NodeT::bits;
777
    static constexpr auto BL = NodeT::bits_leaf;
778
779
    using node_t = NodeT;
780
    node_t* node_;
781
    shift_t shift_;
782
    size_t size_;
783
784
3.14M
    count_t count() const { return subindex(size_ - 1) + 1; }
785
4.36M
    node_t* node() const { return node_; }
786
6.98M
    size_t size() const { return size_; }
787
4.62M
    shift_t shift() const { return shift_; }
788
3.49M
    count_t index(size_t idx) const { return (idx >> shift_) & mask<B>; }
789
3.15M
    count_t subindex(size_t idx) const { return idx >> shift_; }
790
    size_t size_before(count_t offset) const
791
13.8k
    {
792
13.8k
        return size_t{offset} << shift_;
793
13.8k
    }
794
4.68k
    size_t this_size() const { return size_; }
795
796
    auto size(count_t offset)
797
6.61k
    {
798
6.61k
        return offset == subindex(size_ - 1) ? size_ - size_before(offset)
799
6.61k
                                             : size_t{1} << shift_;
800
6.61k
    }
801
802
    auto size_sbh(count_t offset, size_t size_before_hint)
803
4.68k
    {
804
4.68k
        assert(size_before_hint == size_before(offset));
805
4.68k
        return offset == subindex(size_ - 1) ? size_ - size_before_hint
806
4.68k
                                             : size_t{1} << shift_;
807
4.68k
    }
808
809
    void copy_sizes(count_t offset, count_t n, size_t init, size_t* sizes)
810
7.59k
    {
811
7.59k
        if (n) {
812
6.61k
            auto last = offset + n - 1;
813
6.61k
            auto e    = sizes + n - 1;
814
13.0k
            for (; sizes != e; ++sizes) {
815
6.43k
                init = *sizes = init + (size_t{1} << shift_);
816
6.43k
                assert(init);
817
6.43k
            }
818
6.61k
            *sizes = init + size(last);
819
6.61k
            assert(*sizes);
820
6.61k
        }
821
7.59k
    }
822
823
    template <typename Visitor, typename... Args>
824
    void each(Visitor v, Args&&... args)
825
0
    {
826
0
        return each_regular(*this, v, args...);
827
0
    }
828
829
    template <typename Visitor, typename... Args>
830
    bool each_pred(Visitor v, Args&&... args)
831
    {
832
        return each_pred_regular(*this, v, args...);
833
    }
834
835
    template <typename Visitor, typename... Args>
836
    bool each_pred_zip(Visitor v, node_t* other, Args&&... args)
837
    {
838
        return each_pred_zip_regular(*this, v, other, args...);
839
    }
840
841
    template <typename Visitor, typename... Args>
842
    bool each_pred_i(Visitor v, count_t i, count_t n, Args&&... args)
843
    {
844
        return each_pred_i_regular(*this, v, i, n, args...);
845
    }
846
847
    template <typename Visitor, typename... Args>
848
    bool each_pred_right(Visitor v, count_t start, Args&&... args)
849
    {
850
        return each_pred_right_regular(*this, v, start, args...);
851
    }
852
853
    template <typename Visitor, typename... Args>
854
    bool each_pred_left(Visitor v, count_t last, Args&&... args)
855
    {
856
        return each_pred_left_regular(*this, v, last, args...);
857
    }
858
859
    template <typename Visitor, typename... Args>
860
    void each_i(Visitor v, count_t i, count_t n, Args&&... args)
861
    {
862
        return each_i_regular(*this, v, i, n, args...);
863
    }
864
865
    template <typename Visitor, typename... Args>
866
    void each_right(Visitor v, count_t start, Args&&... args)
867
5.19k
    {
868
5.19k
        return each_right_regular(*this, v, start, args...);
869
5.19k
    }
870
871
    template <typename Visitor, typename... Args>
872
    void each_left(Visitor v, count_t last, Args&&... args)
873
353k
    {
874
353k
        return each_left_regular(*this, v, last, args...);
875
353k
    }
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, unsigned int, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
873
176k
    {
874
176k
        return each_left_regular(*this, v, last, args...);
875
176k
    }
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, unsigned int, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
873
21.3k
    {
874
21.3k
        return each_left_regular(*this, v, last, args...);
875
21.3k
    }
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, unsigned int, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
873
155k
    {
874
155k
        return each_left_regular(*this, v, last, args...);
875
155k
    }
876
877
    template <typename Visitor, typename... Args>
878
    void each_right_sub_(Visitor v, count_t i, Args&&... args)
879
44.0k
    {
880
44.0k
        auto last  = count() - 1;
881
44.0k
        auto lsize = size_ - (last << shift_);
882
44.0k
        auto n     = node()->inner() + i;
883
44.0k
        auto e     = node()->inner() + last;
884
44.0k
        if (shift() == BL) {
885
29.2k
            for (; n != e; ++n) {
886
14.9k
                IMMER_PREFETCH(n + 1);
887
14.9k
                make_full_leaf_pos(*n).visit(v, args...);
888
14.9k
            }
889
14.2k
            make_leaf_sub_pos(*n, lsize).visit(v, args...);
890
29.7k
        } else {
891
29.7k
            auto ss = shift_ - B;
892
60.3k
            for (; n != e; ++n)
893
30.6k
                make_full_pos(*n, ss).visit(v, args...);
894
29.7k
            make_regular_sub_pos(*n, ss, lsize).visit(v, args...);
895
29.7k
        }
896
44.0k
    }
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub_<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, unsigned int, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
879
22.0k
    {
880
22.0k
        auto last  = count() - 1;
881
22.0k
        auto lsize = size_ - (last << shift_);
882
22.0k
        auto n     = node()->inner() + i;
883
22.0k
        auto e     = node()->inner() + last;
884
22.0k
        if (shift() == BL) {
885
14.6k
            for (; n != e; ++n) {
886
7.46k
                IMMER_PREFETCH(n + 1);
887
7.46k
                make_full_leaf_pos(*n).visit(v, args...);
888
7.46k
            }
889
7.13k
            make_leaf_sub_pos(*n, lsize).visit(v, args...);
890
14.8k
        } else {
891
14.8k
            auto ss = shift_ - B;
892
30.1k
            for (; n != e; ++n)
893
15.3k
                make_full_pos(*n, ss).visit(v, args...);
894
14.8k
            make_regular_sub_pos(*n, ss, lsize).visit(v, args...);
895
14.8k
        }
896
22.0k
    }
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub_<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, unsigned int, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
879
6.16k
    {
880
6.16k
        auto last  = count() - 1;
881
6.16k
        auto lsize = size_ - (last << shift_);
882
6.16k
        auto n     = node()->inner() + i;
883
6.16k
        auto e     = node()->inner() + last;
884
6.16k
        if (shift() == BL) {
885
4.33k
            for (; n != e; ++n) {
886
2.25k
                IMMER_PREFETCH(n + 1);
887
2.25k
                make_full_leaf_pos(*n).visit(v, args...);
888
2.25k
            }
889
2.07k
            make_leaf_sub_pos(*n, lsize).visit(v, args...);
890
4.08k
        } else {
891
4.08k
            auto ss = shift_ - B;
892
6.29k
            for (; n != e; ++n)
893
2.20k
                make_full_pos(*n, ss).visit(v, args...);
894
4.08k
            make_regular_sub_pos(*n, ss, lsize).visit(v, args...);
895
4.08k
        }
896
6.16k
    }
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub_<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, unsigned int, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
879
15.8k
    {
880
15.8k
        auto last  = count() - 1;
881
15.8k
        auto lsize = size_ - (last << shift_);
882
15.8k
        auto n     = node()->inner() + i;
883
15.8k
        auto e     = node()->inner() + last;
884
15.8k
        if (shift() == BL) {
885
10.2k
            for (; n != e; ++n) {
886
5.20k
                IMMER_PREFETCH(n + 1);
887
5.20k
                make_full_leaf_pos(*n).visit(v, args...);
888
5.20k
            }
889
5.06k
            make_leaf_sub_pos(*n, lsize).visit(v, args...);
890
10.7k
        } else {
891
10.7k
            auto ss = shift_ - B;
892
23.8k
            for (; n != e; ++n)
893
13.0k
                make_full_pos(*n, ss).visit(v, args...);
894
10.7k
            make_regular_sub_pos(*n, ss, lsize).visit(v, args...);
895
10.7k
        }
896
15.8k
    }
897
898
    template <typename Visitor, typename... Args>
899
    void each_sub(Visitor v, Args&&... args)
900
    {
901
        each_right_sub_(v, 0, args...);
902
    }
903
904
    template <typename Visitor, typename... Args>
905
    void each_right_sub(Visitor v, Args&&... args)
906
120k
    {
907
120k
        if (count() > 1)
908
44.0k
            each_right_sub_(v, 1, args...);
909
120k
    }
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
906
60.3k
    {
907
60.3k
        if (count() > 1)
908
22.0k
            each_right_sub_(v, 1, args...);
909
60.3k
    }
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
906
10.1k
    {
907
10.1k
        if (count() > 1)
908
6.16k
            each_right_sub_(v, 1, args...);
909
10.1k
    }
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
906
50.1k
    {
907
50.1k
        if (count() > 1)
908
15.8k
            each_right_sub_(v, 1, args...);
909
50.1k
    }
910
911
    template <typename Visitor, typename... Args>
912
    void each_left_sub(Visitor v, Args&&... args)
913
353k
    {
914
353k
        each_left(v, count() - 1, args...);
915
353k
    }
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
913
176k
    {
914
176k
        each_left(v, count() - 1, args...);
915
176k
    }
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
913
21.3k
    {
914
21.3k
        each_left(v, count() - 1, args...);
915
21.3k
    }
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
913
155k
    {
914
155k
        each_left(v, count() - 1, args...);
915
155k
    }
916
917
    template <typename Visitor, typename... Args>
918
    decltype(auto) towards(Visitor v, size_t idx, Args&&... args)
919
    {
920
        return towards_oh_ch_regular(
921
            *this, v, idx, index(idx), count(), args...);
922
    }
923
924
    template <typename Visitor, typename... Args>
925
    decltype(auto)
926
    towards_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args)
927
26.9k
    {
928
26.9k
        return towards_oh_ch_regular(
929
26.9k
            *this, v, idx, offset_hint, count(), args...);
930
26.9k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int)
Line
Count
Source
927
3.74k
    {
928
3.74k
        return towards_oh_ch_regular(
929
3.74k
            *this, v, idx, offset_hint, count(), args...);
930
3.74k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int)
Line
Count
Source
927
2.79k
    {
928
2.79k
        return towards_oh_ch_regular(
929
2.79k
            *this, v, idx, offset_hint, count(), args...);
930
2.79k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
927
3.30k
    {
928
3.30k
        return towards_oh_ch_regular(
929
3.30k
            *this, v, idx, offset_hint, count(), args...);
930
3.30k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
927
6.92k
    {
928
6.92k
        return towards_oh_ch_regular(
929
6.92k
            *this, v, idx, offset_hint, count(), args...);
930
6.92k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
927
6.40k
    {
928
6.40k
        return towards_oh_ch_regular(
929
6.40k
            *this, v, idx, offset_hint, count(), args...);
930
6.40k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
927
3.75k
    {
928
3.75k
        return towards_oh_ch_regular(
929
3.75k
            *this, v, idx, offset_hint, count(), args...);
930
3.75k
    }
931
932
    template <typename Visitor, typename... Args>
933
    decltype(auto) towards_oh_ch(Visitor v,
934
                                 size_t idx,
935
                                 count_t offset_hint,
936
                                 count_t count_hint,
937
                                 Args&&... args)
938
8.83k
    {
939
8.83k
        return towards_oh_ch_regular(
940
8.83k
            *this, v, idx, offset_hint, count(), args...);
941
8.83k
    }
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_ch<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
938
2.03k
    {
939
2.03k
        return towards_oh_ch_regular(
940
2.03k
            *this, v, idx, offset_hint, count(), args...);
941
2.03k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_ch<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&&)
Line
Count
Source
938
6.79k
    {
939
6.79k
        return towards_oh_ch_regular(
940
6.79k
            *this, v, idx, offset_hint, count(), args...);
941
6.79k
    }
942
943
    template <typename Visitor, typename... Args>
944
    decltype(auto)
945
    towards_sub_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args)
946
4.68k
    {
947
4.68k
        return towards_sub_oh_regular(*this, v, idx, offset_hint, args...);
948
4.68k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int)
Line
Count
Source
946
3.39k
    {
947
3.39k
        return towards_sub_oh_regular(*this, v, idx, offset_hint, args...);
948
3.39k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int)
Line
Count
Source
946
1.29k
    {
947
1.29k
        return towards_sub_oh_regular(*this, v, idx, offset_hint, args...);
948
1.29k
    }
949
950
    template <typename Visitor, typename... Args>
951
    decltype(auto) last_oh(Visitor v, count_t offset_hint, Args&&... args)
952
1.68M
    {
953
1.68M
        return last_oh_regular(*this, v, offset_hint, args...);
954
1.68M
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned int, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
952
8.77k
    {
953
8.77k
        return last_oh_regular(*this, v, offset_hint, args...);
954
8.77k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
952
1.66M
    {
953
1.66M
        return last_oh_regular(*this, v, offset_hint, args...);
954
1.66M
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
952
3.77k
    {
953
3.77k
        return last_oh_regular(*this, v, offset_hint, args...);
954
3.77k
    }
955
956
    template <typename Visitor, typename... Args>
957
    decltype(auto) last_sub(Visitor v, Args&&... args)
958
176k
    {
959
176k
        auto offset  = count() - 1;
960
176k
        auto child   = node_->inner()[offset];
961
176k
        auto is_leaf = shift_ == BL;
962
176k
        auto lsize   = size_ - (size_t{offset} << shift_);
963
176k
        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
964
176k
                       : make_regular_sub_pos(child, shift_ - B, lsize)
965
119k
                             .visit(v, args...);
966
176k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
958
492
    {
959
492
        auto offset  = count() - 1;
960
492
        auto child   = node_->inner()[offset];
961
492
        auto is_leaf = shift_ == BL;
962
492
        auto lsize   = size_ - (size_t{offset} << shift_);
963
492
        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
964
492
                       : make_regular_sub_pos(child, shift_ - B, lsize)
965
492
                             .visit(v, args...);
966
492
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
958
966
    {
959
966
        auto offset  = count() - 1;
960
966
        auto child   = node_->inner()[offset];
961
966
        auto is_leaf = shift_ == BL;
962
966
        auto lsize   = size_ - (size_t{offset} << shift_);
963
966
        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
964
966
                       : make_regular_sub_pos(child, shift_ - B, lsize)
965
966
                             .visit(v, args...);
966
966
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
958
3.70k
    {
959
3.70k
        auto offset  = count() - 1;
960
3.70k
        auto child   = node_->inner()[offset];
961
3.70k
        auto is_leaf = shift_ == BL;
962
3.70k
        auto lsize   = size_ - (size_t{offset} << shift_);
963
3.70k
        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
964
3.70k
                       : make_regular_sub_pos(child, shift_ - B, lsize)
965
1.45k
                             .visit(v, args...);
966
3.70k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
958
5.55k
    {
959
5.55k
        auto offset  = count() - 1;
960
5.55k
        auto child   = node_->inner()[offset];
961
5.55k
        auto is_leaf = shift_ == BL;
962
5.55k
        auto lsize   = size_ - (size_t{offset} << shift_);
963
5.55k
        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
964
5.55k
                       : make_regular_sub_pos(child, shift_ - B, lsize)
965
998
                             .visit(v, args...);
966
5.55k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
958
10.6k
    {
959
10.6k
        auto offset  = count() - 1;
960
10.6k
        auto child   = node_->inner()[offset];
961
10.6k
        auto is_leaf = shift_ == BL;
962
10.6k
        auto lsize   = size_ - (size_t{offset} << shift_);
963
10.6k
        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
964
10.6k
                       : make_regular_sub_pos(child, shift_ - B, lsize)
965
7.15k
                             .visit(v, args...);
966
10.6k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
958
2.36k
    {
959
2.36k
        auto offset  = count() - 1;
960
2.36k
        auto child   = node_->inner()[offset];
961
2.36k
        auto is_leaf = shift_ == BL;
962
2.36k
        auto lsize   = size_ - (size_t{offset} << shift_);
963
2.36k
        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
964
2.36k
                       : make_regular_sub_pos(child, shift_ - B, lsize)
965
2.36k
                             .visit(v, args...);
966
2.36k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
958
1.95k
    {
959
1.95k
        auto offset  = count() - 1;
960
1.95k
        auto child   = node_->inner()[offset];
961
1.95k
        auto is_leaf = shift_ == BL;
962
1.95k
        auto lsize   = size_ - (size_t{offset} << shift_);
963
1.95k
        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
964
1.95k
                       : make_regular_sub_pos(child, shift_ - B, lsize)
965
1.95k
                             .visit(v, args...);
966
1.95k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
958
27.4k
    {
959
27.4k
        auto offset  = count() - 1;
960
27.4k
        auto child   = node_->inner()[offset];
961
27.4k
        auto is_leaf = shift_ == BL;
962
27.4k
        auto lsize   = size_ - (size_t{offset} << shift_);
963
27.4k
        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
964
27.4k
                       : make_regular_sub_pos(child, shift_ - B, lsize)
965
18.9k
                             .visit(v, args...);
966
27.4k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
958
5.73k
    {
959
5.73k
        auto offset  = count() - 1;
960
5.73k
        auto child   = node_->inner()[offset];
961
5.73k
        auto is_leaf = shift_ == BL;
962
5.73k
        auto lsize   = size_ - (size_t{offset} << shift_);
963
5.73k
        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
964
5.73k
                       : make_regular_sub_pos(child, shift_ - B, lsize)
965
2.10k
                             .visit(v, args...);
966
5.73k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
958
117k
    {
959
117k
        auto offset  = count() - 1;
960
117k
        auto child   = node_->inner()[offset];
961
117k
        auto is_leaf = shift_ == BL;
962
117k
        auto lsize   = size_ - (size_t{offset} << shift_);
963
117k
        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
964
117k
                       : make_regular_sub_pos(child, shift_ - B, lsize)
965
82.9k
                             .visit(v, args...);
966
117k
    }
967
968
    template <typename Visitor, typename... Args>
969
    decltype(auto) first_sub(Visitor v, Args&&... args)
970
14.8k
    {
971
14.8k
        auto is_leaf = shift_ == BL;
972
14.8k
        auto child   = node_->inner()[0];
973
14.8k
        auto is_full = size_ >= (size_t{1} << shift_);
974
14.8k
        return is_full
975
14.8k
                   ? (is_leaf
976
14.8k
                          ? make_full_leaf_pos(child).visit(v, args...)
977
14.8k
                          : make_full_pos(child, shift_ - B).visit(v, args...))
978
14.8k
                   : (is_leaf
979
0
                          ? make_leaf_sub_pos(child, size_).visit(v, args...)
980
0
                          : make_regular_sub_pos(child, shift_ - B, size_)
981
0
                                .visit(v, args...));
982
14.8k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
970
577
    {
971
577
        auto is_leaf = shift_ == BL;
972
577
        auto child   = node_->inner()[0];
973
577
        auto is_full = size_ >= (size_t{1} << shift_);
974
577
        return is_full
975
577
                   ? (is_leaf
976
577
                          ? make_full_leaf_pos(child).visit(v, args...)
977
577
                          : make_full_pos(child, shift_ - B).visit(v, args...))
978
577
                   : (is_leaf
979
0
                          ? make_leaf_sub_pos(child, size_).visit(v, args...)
980
0
                          : make_regular_sub_pos(child, shift_ - B, size_)
981
0
                                .visit(v, args...));
982
577
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
970
2.02k
    {
971
2.02k
        auto is_leaf = shift_ == BL;
972
2.02k
        auto child   = node_->inner()[0];
973
2.02k
        auto is_full = size_ >= (size_t{1} << shift_);
974
2.02k
        return is_full
975
2.02k
                   ? (is_leaf
976
2.02k
                          ? make_full_leaf_pos(child).visit(v, args...)
977
2.02k
                          : make_full_pos(child, shift_ - B).visit(v, args...))
978
2.02k
                   : (is_leaf
979
0
                          ? make_leaf_sub_pos(child, size_).visit(v, args...)
980
0
                          : make_regular_sub_pos(child, shift_ - B, size_)
981
0
                                .visit(v, args...));
982
2.02k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
970
1.48k
    {
971
1.48k
        auto is_leaf = shift_ == BL;
972
1.48k
        auto child   = node_->inner()[0];
973
1.48k
        auto is_full = size_ >= (size_t{1} << shift_);
974
1.48k
        return is_full
975
1.48k
                   ? (is_leaf
976
1.48k
                          ? make_full_leaf_pos(child).visit(v, args...)
977
1.48k
                          : make_full_pos(child, shift_ - B).visit(v, args...))
978
1.48k
                   : (is_leaf
979
0
                          ? make_leaf_sub_pos(child, size_).visit(v, args...)
980
0
                          : make_regular_sub_pos(child, shift_ - B, size_)
981
0
                                .visit(v, args...));
982
1.48k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
970
940
    {
971
940
        auto is_leaf = shift_ == BL;
972
940
        auto child   = node_->inner()[0];
973
940
        auto is_full = size_ >= (size_t{1} << shift_);
974
940
        return is_full
975
940
                   ? (is_leaf
976
940
                          ? make_full_leaf_pos(child).visit(v, args...)
977
940
                          : make_full_pos(child, shift_ - B).visit(v, args...))
978
940
                   : (is_leaf
979
0
                          ? make_leaf_sub_pos(child, size_).visit(v, args...)
980
0
                          : make_regular_sub_pos(child, shift_ - B, size_)
981
0
                                .visit(v, args...));
982
940
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
970
8.25k
    {
971
8.25k
        auto is_leaf = shift_ == BL;
972
8.25k
        auto child   = node_->inner()[0];
973
8.25k
        auto is_full = size_ >= (size_t{1} << shift_);
974
8.25k
        return is_full
975
8.25k
                   ? (is_leaf
976
8.25k
                          ? make_full_leaf_pos(child).visit(v, args...)
977
8.25k
                          : make_full_pos(child, shift_ - B).visit(v, args...))
978
8.25k
                   : (is_leaf
979
0
                          ? make_leaf_sub_pos(child, size_).visit(v, args...)
980
0
                          : make_regular_sub_pos(child, shift_ - B, size_)
981
0
                                .visit(v, args...));
982
8.25k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
970
1.59k
    {
971
1.59k
        auto is_leaf = shift_ == BL;
972
1.59k
        auto child   = node_->inner()[0];
973
1.59k
        auto is_full = size_ >= (size_t{1} << shift_);
974
1.59k
        return is_full
975
1.59k
                   ? (is_leaf
976
1.59k
                          ? make_full_leaf_pos(child).visit(v, args...)
977
1.59k
                          : make_full_pos(child, shift_ - B).visit(v, args...))
978
1.59k
                   : (is_leaf
979
0
                          ? make_leaf_sub_pos(child, size_).visit(v, args...)
980
0
                          : make_regular_sub_pos(child, shift_ - B, size_)
981
0
                                .visit(v, args...));
982
1.59k
    }
983
984
    template <typename Visitor, typename... Args>
985
    decltype(auto) first_sub_leaf(Visitor v, Args&&... args)
986
45.4k
    {
987
45.4k
        assert(shift_ == BL);
988
45.4k
        auto child   = node_->inner()[0];
989
45.4k
        auto is_full = size_ >= branches<BL>;
990
45.4k
        return is_full ? make_full_leaf_pos(child).visit(v, args...)
991
45.4k
                       : make_leaf_sub_pos(child, size_).visit(v, args...);
992
45.4k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
986
783
    {
987
783
        assert(shift_ == BL);
988
783
        auto child   = node_->inner()[0];
989
783
        auto is_full = size_ >= branches<BL>;
990
783
        return is_full ? make_full_leaf_pos(child).visit(v, args...)
991
783
                       : make_leaf_sub_pos(child, size_).visit(v, args...);
992
783
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
986
5.29k
    {
987
5.29k
        assert(shift_ == BL);
988
5.29k
        auto child   = node_->inner()[0];
989
5.29k
        auto is_full = size_ >= branches<BL>;
990
5.29k
        return is_full ? make_full_leaf_pos(child).visit(v, args...)
991
5.29k
                       : make_leaf_sub_pos(child, size_).visit(v, args...);
992
5.29k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
986
2.58k
    {
987
2.58k
        assert(shift_ == BL);
988
2.58k
        auto child   = node_->inner()[0];
989
2.58k
        auto is_full = size_ >= branches<BL>;
990
2.58k
        return is_full ? make_full_leaf_pos(child).visit(v, args...)
991
2.58k
                       : make_leaf_sub_pos(child, size_).visit(v, args...);
992
2.58k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
986
36.7k
    {
987
36.7k
        assert(shift_ == BL);
988
36.7k
        auto child   = node_->inner()[0];
989
36.7k
        auto is_full = size_ >= branches<BL>;
990
36.7k
        return is_full ? make_full_leaf_pos(child).visit(v, args...)
991
36.7k
                       : make_leaf_sub_pos(child, size_).visit(v, args...);
992
36.7k
    }
993
994
    template <typename Visitor, typename... Args>
995
    decltype(auto) first_sub_inner(Visitor v, Args&&... args)
996
    {
997
        assert(shift_ >= BL);
998
        auto child   = node_->inner()[0];
999
        auto is_full = size_ >= branches<BL>;
1000
        return is_full ? make_full_pos(child, shift_ - B).visit(v, args...)
1001
                       : make_regular_sub_pos(child, shift_ - B, size_)
1002
                             .visit(v, args...);
1003
    }
1004
1005
    template <typename Visitor, typename... Args>
1006
    decltype(auto) nth_sub(count_t idx, Visitor v, Args&&... args)
1007
    {
1008
        assert(idx < count());
1009
        auto is_leaf = shift_ == BL;
1010
        auto child   = node_->inner()[idx];
1011
        auto lsize   = size(idx);
1012
        auto is_full = idx + 1 < count();
1013
        return is_full
1014
                   ? (is_leaf
1015
                          ? make_full_leaf_pos(child).visit(v, args...)
1016
                          : make_full_pos(child, shift_ - B).visit(v, args...))
1017
                   : (is_leaf
1018
                          ? make_leaf_sub_pos(child, lsize).visit(v, args...)
1019
                          : make_regular_sub_pos(child, shift_ - B, lsize)
1020
                                .visit(v, args...));
1021
    }
1022
1023
    template <typename Visitor, typename... Args>
1024
    decltype(auto) nth_sub_leaf(count_t idx, Visitor v, Args&&... args)
1025
    {
1026
        assert(shift_ == BL);
1027
        auto child   = node_->inner()[idx];
1028
        auto lsize   = size(idx);
1029
        auto is_full = idx + 1 < count();
1030
        return is_full ? make_full_leaf_pos(child).visit(v, args...)
1031
                       : make_leaf_sub_pos(child, lsize).visit(v, args...);
1032
    }
1033
1034
    template <typename Visitor, typename... Args>
1035
    decltype(auto) visit(Visitor v, Args&&... args)
1036
2.37M
    {
1037
2.37M
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
2.37M
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor)
Line
Count
Source
1036
60.6k
    {
1037
60.6k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
60.6k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
Line
Count
Source
1036
8.13k
    {
1037
8.13k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
8.13k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
1036
4.25k
    {
1037
4.25k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
4.25k
    }
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
1036
2.03k
    {
1037
2.03k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
2.03k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&)
Line
Count
Source
1036
1.41k
    {
1037
1.41k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
1.41k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&)
Line
Count
Source
1036
5.12k
    {
1037
5.12k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
5.12k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&)
Line
Count
Source
1036
1.55k
    {
1037
1.55k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
1.55k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&&)
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&)
Line
Count
Source
1036
2.78k
    {
1037
2.78k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
2.78k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&&)
Line
Count
Source
1036
351
    {
1037
351
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
351
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
201
    {
1037
201
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
201
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
1036
160k
    {
1037
160k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
160k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
16.6k
    {
1037
16.6k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
16.6k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
1.15k
    {
1037
1.15k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
1.15k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
818
    {
1037
818
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
818
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
826
    {
1037
826
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
826
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
1.30k
    {
1037
1.30k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
1.30k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
1.68k
    {
1037
1.68k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
1.68k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
1.43k
    {
1037
1.43k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
1.43k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
10.3k
    {
1037
10.3k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
10.3k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
409
    {
1037
409
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
409
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
2.60k
    {
1037
2.60k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
2.60k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&)
Line
Count
Source
1036
5.77k
    {
1037
5.77k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
5.77k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
4.96k
    {
1037
4.96k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
4.96k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
Line
Count
Source
1036
679k
    {
1037
679k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
679k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
Line
Count
Source
1036
2.76k
    {
1037
2.76k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
2.76k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&)
Line
Count
Source
1036
1.01M
    {
1037
1.01M
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
1.01M
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&)
Line
Count
Source
1036
1.97k
    {
1037
1.97k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
1.97k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&&)
Line
Count
Source
1036
4.81k
    {
1037
4.81k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
4.81k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1036
1.06k
    {
1037
1.06k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
1.06k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1036
2.58k
    {
1037
2.58k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
2.58k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_right_visitor, unsigned int>(immer::detail::rbts::dec_right_visitor, unsigned int&&)
Line
Count
Source
1036
9.52k
    {
1037
9.52k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
9.52k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1036
1.88k
    {
1037
1.88k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
1.88k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1036
14.8k
    {
1037
14.8k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
14.8k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1036
269
    {
1037
269
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
269
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1036
144k
    {
1037
144k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
144k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1036
3.25k
    {
1037
3.25k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
3.25k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
4.08k
    {
1037
4.08k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
4.08k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1036
2.70k
    {
1037
2.70k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
2.70k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
2.56k
    {
1037
2.56k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
2.56k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
19.2k
    {
1037
19.2k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
19.2k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
7.77k
    {
1037
7.77k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
7.77k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1036
115k
    {
1037
115k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
115k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1036
1.24k
    {
1037
1.24k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
1.24k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1036
39.7k
    {
1037
39.7k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
39.7k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&)
Line
Count
Source
1036
6.42k
    {
1037
6.42k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
6.42k
    }
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1036
2.89k
    {
1037
2.89k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1038
2.89k
    }
1039
};
1040
1041
template <typename NodeT>
1042
regular_sub_pos<NodeT>
1043
make_regular_sub_pos(NodeT* node, shift_t shift, size_t size)
1044
2.35M
{
1045
2.35M
    assert(node);
1046
2.35M
    assert(shift >= NodeT::bits_leaf);
1047
2.35M
    assert(size > 0);
1048
2.35M
    assert(size <= (branches<NodeT::bits, size_t> << shift));
1049
2.35M
    return {node, shift, size};
1050
2.35M
}
1051
1052
template <typename NodeT,
1053
          shift_t Shift,
1054
          bits_t B  = NodeT::bits,
1055
          bits_t BL = NodeT::bits_leaf>
1056
struct regular_descent_pos
1057
{
1058
    static_assert(Shift > 0, "not leaf...");
1059
1060
    using node_t = NodeT;
1061
    node_t* node_;
1062
1063
    node_t* node() const { return node_; }
1064
    shift_t shift() const { return Shift; }
1065
    count_t index(size_t idx) const
1066
    {
1067
#if !defined(_MSC_VER)
1068
#pragma GCC diagnostic push
1069
#pragma GCC diagnostic ignored "-Wshift-count-overflow"
1070
#endif
1071
        return (idx >> Shift) & mask<B>;
1072
#if !defined(_MSC_VER)
1073
#pragma GCC diagnostic pop
1074
#endif
1075
    }
1076
1077
    template <typename Visitor>
1078
    decltype(auto) descend(Visitor v, size_t idx)
1079
    {
1080
        auto offset = index(idx);
1081
        auto child  = node_->inner()[offset];
1082
        return regular_descent_pos<NodeT, Shift - B>{child}.visit(v, idx);
1083
    }
1084
1085
    template <typename Visitor, typename... Args>
1086
    decltype(auto) visit(Visitor v, Args&&... args)
1087
    {
1088
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1089
    }
1090
};
1091
1092
template <typename NodeT, bits_t B, bits_t BL>
1093
struct regular_descent_pos<NodeT, BL, B, BL>
1094
{
1095
    using node_t = NodeT;
1096
    node_t* node_;
1097
1098
    node_t* node() const { return node_; }
1099
    shift_t shift() const { return BL; }
1100
    count_t index(size_t idx) const { return (idx >> BL) & mask<B>; }
1101
1102
    template <typename Visitor>
1103
    decltype(auto) descend(Visitor v, size_t idx)
1104
    {
1105
        auto offset = index(idx);
1106
        auto child  = node_->inner()[offset];
1107
        return make_leaf_descent_pos(child).visit(v, idx);
1108
    }
1109
1110
    template <typename Visitor, typename... Args>
1111
    decltype(auto) visit(Visitor v, Args&&... args)
1112
    {
1113
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1114
    }
1115
};
1116
1117
template <typename NodeT, typename Visitor>
1118
decltype(auto)
1119
visit_regular_descent(NodeT* node, shift_t shift, Visitor v, size_t idx)
1120
{
1121
    constexpr auto B  = NodeT::bits;
1122
    constexpr auto BL = NodeT::bits_leaf;
1123
    assert(node);
1124
    assert(shift >= BL);
1125
    switch (shift) {
1126
    case BL + B * 0:
1127
        return regular_descent_pos<NodeT, BL + B * 0>{node}.visit(v, idx);
1128
    case BL + B * 1:
1129
        return regular_descent_pos<NodeT, BL + B * 1>{node}.visit(v, idx);
1130
    case BL + B * 2:
1131
        return regular_descent_pos<NodeT, BL + B * 2>{node}.visit(v, idx);
1132
    case BL + B * 3:
1133
        return regular_descent_pos<NodeT, BL + B * 3>{node}.visit(v, idx);
1134
    case BL + B * 4:
1135
        return regular_descent_pos<NodeT, BL + B * 4>{node}.visit(v, idx);
1136
    case BL + B * 5:
1137
        return regular_descent_pos<NodeT, BL + B * 5>{node}.visit(v, idx);
1138
#if IMMER_DESCENT_DEEP
1139
    default:
1140
        for (auto level = shift; level != endshift<B, BL>; level -= B)
1141
            node = node->inner()[(idx >> level) & mask<B>];
1142
        return make_leaf_descent_pos(node).visit(v, idx);
1143
#endif // IMMER_DEEP_DESCENT
1144
    }
1145
    IMMER_UNREACHABLE;
1146
}
1147
1148
template <typename NodeT>
1149
struct full_pos
1150
{
1151
    static constexpr auto B  = NodeT::bits;
1152
    static constexpr auto BL = NodeT::bits_leaf;
1153
1154
    using node_t = NodeT;
1155
    node_t* node_;
1156
    shift_t shift_;
1157
1158
571k
    count_t count() const { return branches<B>; }
1159
357k
    node_t* node() const { return node_; }
1160
283k
    size_t size() const { return branches<B, size_t> << shift_; }
1161
59.3k
    shift_t shift() const { return shift_; }
1162
54.0k
    count_t index(size_t idx) const { return (idx >> shift_) & mask<B>; }
1163
3.97k
    count_t subindex(size_t idx) const { return idx >> shift_; }
1164
    size_t size(count_t offset) const { return size_t{1} << shift_; }
1165
    size_t size_sbh(count_t offset, size_t) const
1166
3.97k
    {
1167
3.97k
        return size_t{1} << shift_;
1168
3.97k
    }
1169
    size_t size_before(count_t offset) const
1170
3.97k
    {
1171
3.97k
        return size_t{offset} << shift_;
1172
3.97k
    }
1173
1174
    void copy_sizes(count_t offset, count_t n, size_t init, size_t* sizes)
1175
3.70k
    {
1176
3.70k
        auto e = sizes + n;
1177
10.0k
        for (; sizes != e; ++sizes) {
1178
6.32k
            init = *sizes = init + (size_t{1} << shift_);
1179
6.32k
            assert(init);
1180
6.32k
        }
1181
3.70k
    }
1182
1183
    template <typename Visitor, typename... Args>
1184
    void each(Visitor v, Args&&... args)
1185
0
    {
1186
0
        auto p = node_->inner();
1187
0
        auto e = p + branches<B>;
1188
0
        if (shift_ == BL) {
1189
0
            for (; p != e; ++p) {
1190
0
                IMMER_PREFETCH(p + 1);
1191
0
                make_full_leaf_pos(*p).visit(v, args...);
1192
0
            }
1193
0
        } else {
1194
0
            auto ss = shift_ - B;
1195
0
            for (; p != e; ++p)
1196
0
                make_full_pos(*p, ss).visit(v, args...);
1197
0
        }
1198
0
    }
1199
1200
    template <typename Visitor, typename... Args>
1201
    bool each_pred(Visitor v, Args&&... args)
1202
    {
1203
        auto p = node_->inner();
1204
        auto e = p + branches<B>;
1205
        if (shift_ == BL) {
1206
            for (; p != e; ++p) {
1207
                IMMER_PREFETCH(p + 1);
1208
                if (!make_full_leaf_pos(*p).visit(v, args...))
1209
                    return false;
1210
            }
1211
        } else {
1212
            auto ss = shift_ - B;
1213
            for (; p != e; ++p)
1214
                if (!make_full_pos(*p, ss).visit(v, args...))
1215
                    return false;
1216
        }
1217
        return true;
1218
    }
1219
1220
    template <typename Visitor, typename... Args>
1221
    bool each_pred_zip(Visitor v, node_t* other, Args&&... args)
1222
    {
1223
        auto p  = node_->inner();
1224
        auto p2 = other->inner();
1225
        auto e  = p + branches<B>;
1226
        if (shift_ == BL) {
1227
            for (; p != e; ++p, ++p2) {
1228
                IMMER_PREFETCH(p + 1);
1229
                if (!make_full_leaf_pos(*p).visit(v, *p2, args...))
1230
                    return false;
1231
            }
1232
        } else {
1233
            auto ss = shift_ - B;
1234
            for (; p != e; ++p, ++p2)
1235
                if (!make_full_pos(*p, ss).visit(v, *p2, args...))
1236
                    return false;
1237
        }
1238
        return true;
1239
    }
1240
1241
    template <typename Visitor, typename... Args>
1242
    bool each_pred_i(Visitor v, count_t i, count_t n, Args&&... args)
1243
    {
1244
        auto p = node_->inner() + i;
1245
        auto e = node_->inner() + n;
1246
        if (shift_ == BL) {
1247
            for (; p != e; ++p) {
1248
                IMMER_PREFETCH(p + 1);
1249
                if (!make_full_leaf_pos(*p).visit(v, args...))
1250
                    return false;
1251
            }
1252
        } else {
1253
            auto ss = shift_ - B;
1254
            for (; p != e; ++p)
1255
                if (!make_full_pos(*p, ss).visit(v, args...))
1256
                    return false;
1257
        }
1258
        return true;
1259
    }
1260
1261
    template <typename Visitor, typename... Args>
1262
    void each_i(Visitor v, count_t i, count_t n, Args&&... args)
1263
79.6k
    {
1264
79.6k
        auto p = node_->inner() + i;
1265
79.6k
        auto e = node_->inner() + n;
1266
79.6k
        if (shift_ == BL) {
1267
120k
            for (; p != e; ++p) {
1268
89.6k
                IMMER_PREFETCH(p + 1);
1269
89.6k
                make_full_leaf_pos(*p).visit(v, args...);
1270
89.6k
            }
1271
48.9k
        } else {
1272
48.9k
            auto ss = shift_ - B;
1273
194k
            for (; p != e; ++p)
1274
145k
                make_full_pos(*p, ss).visit(v, args...);
1275
48.9k
        }
1276
79.6k
    }
void immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_i<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, unsigned int, unsigned int, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
1263
38.9k
    {
1264
38.9k
        auto p = node_->inner() + i;
1265
38.9k
        auto e = node_->inner() + n;
1266
38.9k
        if (shift_ == BL) {
1267
59.4k
            for (; p != e; ++p) {
1268
44.6k
                IMMER_PREFETCH(p + 1);
1269
44.6k
                make_full_leaf_pos(*p).visit(v, args...);
1270
44.6k
            }
1271
24.1k
        } else {
1272
24.1k
            auto ss = shift_ - B;
1273
96.4k
            for (; p != e; ++p)
1274
72.3k
                make_full_pos(*p, ss).visit(v, args...);
1275
24.1k
        }
1276
38.9k
    }
void immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_i<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, unsigned int, unsigned int, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1263
7.32k
    {
1264
7.32k
        auto p = node_->inner() + i;
1265
7.32k
        auto e = node_->inner() + n;
1266
7.32k
        if (shift_ == BL) {
1267
16.3k
            for (; p != e; ++p) {
1268
12.2k
                IMMER_PREFETCH(p + 1);
1269
12.2k
                make_full_leaf_pos(*p).visit(v, args...);
1270
12.2k
            }
1271
4.08k
        } else {
1272
3.24k
            auto ss = shift_ - B;
1273
12.9k
            for (; p != e; ++p)
1274
9.72k
                make_full_pos(*p, ss).visit(v, args...);
1275
3.24k
        }
1276
7.32k
    }
void immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_i<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor, unsigned int, unsigned int)
Line
Count
Source
1263
1.65k
    {
1264
1.65k
        auto p = node_->inner() + i;
1265
1.65k
        auto e = node_->inner() + n;
1266
1.65k
        if (shift_ == BL) {
1267
1.38k
            for (; p != e; ++p) {
1268
453
                IMMER_PREFETCH(p + 1);
1269
453
                make_full_leaf_pos(*p).visit(v, args...);
1270
453
            }
1271
928
        } else {
1272
722
            auto ss = shift_ - B;
1273
1.43k
            for (; p != e; ++p)
1274
709
                make_full_pos(*p, ss).visit(v, args...);
1275
722
        }
1276
1.65k
    }
void immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_i<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, unsigned int, unsigned int, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1263
31.6k
    {
1264
31.6k
        auto p = node_->inner() + i;
1265
31.6k
        auto e = node_->inner() + n;
1266
31.6k
        if (shift_ == BL) {
1267
43.1k
            for (; p != e; ++p) {
1268
32.3k
                IMMER_PREFETCH(p + 1);
1269
32.3k
                make_full_leaf_pos(*p).visit(v, args...);
1270
32.3k
            }
1271
20.8k
        } else {
1272
20.8k
            auto ss = shift_ - B;
1273
83.5k
            for (; p != e; ++p)
1274
62.6k
                make_full_pos(*p, ss).visit(v, args...);
1275
20.8k
        }
1276
31.6k
    }
1277
1278
    template <typename Visitor, typename... Args>
1279
    bool each_pred_right(Visitor v, count_t start, Args&&... args)
1280
    {
1281
        return each_pred_i(v, start, branches<B>, args...);
1282
    }
1283
1284
    template <typename Visitor, typename... Args>
1285
    bool each_pred_left(Visitor v, count_t last, Args&&... args)
1286
    {
1287
        return each_pred_i(v, 0, last, args...);
1288
    }
1289
1290
    template <typename Visitor, typename... Args>
1291
    void each_sub(Visitor v, Args&&... args)
1292
    {
1293
        each(v, args...);
1294
    }
1295
1296
    template <typename Visitor, typename... Args>
1297
    void each_left_sub(Visitor v, Args&&... args)
1298
    {
1299
        each_i(v, 0, branches<B> - 1, args...);
1300
    }
1301
1302
    template <typename Visitor, typename... Args>
1303
    void each_right_sub(Visitor v, Args&&... args)
1304
77.9k
    {
1305
77.9k
        each_i(v, 1, branches<B>, args...);
1306
77.9k
    }
void immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
1304
38.9k
    {
1305
38.9k
        each_i(v, 1, branches<B>, args...);
1306
38.9k
    }
void immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1304
7.32k
    {
1305
7.32k
        each_i(v, 1, branches<B>, args...);
1306
7.32k
    }
void immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1304
31.6k
    {
1305
31.6k
        each_i(v, 1, branches<B>, args...);
1306
31.6k
    }
1307
1308
    template <typename Visitor, typename... Args>
1309
    void each_right(Visitor v, count_t start, Args&&... args)
1310
1.65k
    {
1311
1.65k
        each_i(v, start, branches<B>, args...);
1312
1.65k
    }
1313
1314
    template <typename Visitor, typename... Args>
1315
    void each_left(Visitor v, count_t last, Args&&... args)
1316
    {
1317
        each_i(v, 0, last, args...);
1318
    }
1319
1320
    template <typename Visitor, typename... Args>
1321
    decltype(auto) towards(Visitor v, size_t idx, Args&&... args)
1322
    {
1323
        return towards_oh(v, idx, index(idx), args...);
1324
    }
1325
1326
    template <typename Visitor, typename... Args>
1327
    decltype(auto) towards_oh_ch(
1328
        Visitor v, size_t idx, count_t offset_hint, count_t, Args&&... args)
1329
7.75k
    {
1330
7.75k
        return towards_oh(v, idx, offset_hint, args...);
1331
7.75k
    }
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_ch<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
1329
1.28k
    {
1330
1.28k
        return towards_oh(v, idx, offset_hint, args...);
1331
1.28k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_ch<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&&)
Line
Count
Source
1329
6.47k
    {
1330
6.47k
        return towards_oh(v, idx, offset_hint, args...);
1331
6.47k
    }
1332
1333
    template <typename Visitor, typename... Args>
1334
    decltype(auto)
1335
    towards_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args)
1336
25.0k
    {
1337
25.0k
        assert(offset_hint == index(idx));
1338
25.0k
        auto is_leaf = shift_ == BL;
1339
25.0k
        auto child   = node_->inner()[offset_hint];
1340
25.0k
        return is_leaf
1341
25.0k
                   ? make_full_leaf_pos(child).visit(v, idx, args...)
1342
25.0k
                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
1343
25.0k
    }
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
1336
1.28k
    {
1337
1.28k
        assert(offset_hint == index(idx));
1338
1.28k
        auto is_leaf = shift_ == BL;
1339
1.28k
        auto child   = node_->inner()[offset_hint];
1340
1.28k
        return is_leaf
1341
1.28k
                   ? make_full_leaf_pos(child).visit(v, idx, args...)
1342
1.28k
                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
1343
1.28k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int)
Line
Count
Source
1336
3.10k
    {
1337
3.10k
        assert(offset_hint == index(idx));
1338
3.10k
        auto is_leaf = shift_ == BL;
1339
3.10k
        auto child   = node_->inner()[offset_hint];
1340
3.10k
        return is_leaf
1341
3.10k
                   ? make_full_leaf_pos(child).visit(v, idx, args...)
1342
3.10k
                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
1343
3.10k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int)
Line
Count
Source
1336
996
    {
1337
996
        assert(offset_hint == index(idx));
1338
996
        auto is_leaf = shift_ == BL;
1339
996
        auto child   = node_->inner()[offset_hint];
1340
996
        return is_leaf
1341
996
                   ? make_full_leaf_pos(child).visit(v, idx, args...)
1342
996
                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
1343
996
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&)
Line
Count
Source
1336
6.47k
    {
1337
6.47k
        assert(offset_hint == index(idx));
1338
6.47k
        auto is_leaf = shift_ == BL;
1339
6.47k
        auto child   = node_->inner()[offset_hint];
1340
6.47k
        return is_leaf
1341
6.47k
                   ? make_full_leaf_pos(child).visit(v, idx, args...)
1342
6.47k
                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
1343
6.47k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1336
1.53k
    {
1337
1.53k
        assert(offset_hint == index(idx));
1338
1.53k
        auto is_leaf = shift_ == BL;
1339
1.53k
        auto child   = node_->inner()[offset_hint];
1340
1.53k
        return is_leaf
1341
1.53k
                   ? make_full_leaf_pos(child).visit(v, idx, args...)
1342
1.53k
                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
1343
1.53k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1336
1.71k
    {
1337
1.71k
        assert(offset_hint == index(idx));
1338
1.71k
        auto is_leaf = shift_ == BL;
1339
1.71k
        auto child   = node_->inner()[offset_hint];
1340
1.71k
        return is_leaf
1341
1.71k
                   ? make_full_leaf_pos(child).visit(v, idx, args...)
1342
1.71k
                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
1343
1.71k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1336
8.79k
    {
1337
8.79k
        assert(offset_hint == index(idx));
1338
8.79k
        auto is_leaf = shift_ == BL;
1339
8.79k
        auto child   = node_->inner()[offset_hint];
1340
8.79k
        return is_leaf
1341
8.79k
                   ? make_full_leaf_pos(child).visit(v, idx, args...)
1342
8.79k
                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
1343
8.79k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1336
1.14k
    {
1337
1.14k
        assert(offset_hint == index(idx));
1338
1.14k
        auto is_leaf = shift_ == BL;
1339
1.14k
        auto child   = node_->inner()[offset_hint];
1340
1.14k
        return is_leaf
1341
1.14k
                   ? make_full_leaf_pos(child).visit(v, idx, args...)
1342
1.14k
                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
1343
1.14k
    }
1344
1345
    template <typename Visitor, typename... Args>
1346
    decltype(auto)
1347
    towards_sub_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args)
1348
3.97k
    {
1349
3.97k
        assert(offset_hint == index(idx));
1350
3.97k
        auto is_leaf = shift_ == BL;
1351
3.97k
        auto child   = node_->inner()[offset_hint];
1352
3.97k
        auto lsize   = size_t{offset_hint} << shift_;
1353
3.97k
        return is_leaf
1354
3.97k
                   ? make_full_leaf_pos(child).visit(v, idx - lsize, args...)
1355
3.97k
                   : make_full_pos(child, shift_ - B)
1356
1.60k
                         .visit(v, idx - lsize, args...);
1357
3.97k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int)
Line
Count
Source
1348
3.70k
    {
1349
3.70k
        assert(offset_hint == index(idx));
1350
3.70k
        auto is_leaf = shift_ == BL;
1351
3.70k
        auto child   = node_->inner()[offset_hint];
1352
3.70k
        auto lsize   = size_t{offset_hint} << shift_;
1353
3.70k
        return is_leaf
1354
3.70k
                   ? make_full_leaf_pos(child).visit(v, idx - lsize, args...)
1355
3.70k
                   : make_full_pos(child, shift_ - B)
1356
1.33k
                         .visit(v, idx - lsize, args...);
1357
3.70k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int)
Line
Count
Source
1348
272
    {
1349
272
        assert(offset_hint == index(idx));
1350
272
        auto is_leaf = shift_ == BL;
1351
272
        auto child   = node_->inner()[offset_hint];
1352
272
        auto lsize   = size_t{offset_hint} << shift_;
1353
272
        return is_leaf
1354
272
                   ? make_full_leaf_pos(child).visit(v, idx - lsize, args...)
1355
272
                   : make_full_pos(child, shift_ - B)
1356
272
                         .visit(v, idx - lsize, args...);
1357
272
    }
1358
1359
    template <typename Visitor, typename... Args>
1360
    decltype(auto) first_sub(Visitor v, Args&&... args)
1361
24.1k
    {
1362
24.1k
        auto is_leaf = shift_ == BL;
1363
24.1k
        auto child   = node_->inner()[0];
1364
24.1k
        return is_leaf ? make_full_leaf_pos(child).visit(v, args...)
1365
24.1k
                       : make_full_pos(child, shift_ - B).visit(v, args...);
1366
24.1k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1361
482
    {
1362
482
        auto is_leaf = shift_ == BL;
1363
482
        auto child   = node_->inner()[0];
1364
482
        return is_leaf ? make_full_leaf_pos(child).visit(v, args...)
1365
482
                       : make_full_pos(child, shift_ - B).visit(v, args...);
1366
482
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1361
1.91k
    {
1362
1.91k
        auto is_leaf = shift_ == BL;
1363
1.91k
        auto child   = node_->inner()[0];
1364
1.91k
        return is_leaf ? make_full_leaf_pos(child).visit(v, args...)
1365
1.91k
                       : make_full_pos(child, shift_ - B).visit(v, args...);
1366
1.91k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1361
842
    {
1362
842
        auto is_leaf = shift_ == BL;
1363
842
        auto child   = node_->inner()[0];
1364
842
        return is_leaf ? make_full_leaf_pos(child).visit(v, args...)
1365
842
                       : make_full_pos(child, shift_ - B).visit(v, args...);
1366
842
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1361
691
    {
1362
691
        auto is_leaf = shift_ == BL;
1363
691
        auto child   = node_->inner()[0];
1364
691
        return is_leaf ? make_full_leaf_pos(child).visit(v, args...)
1365
691
                       : make_full_pos(child, shift_ - B).visit(v, args...);
1366
691
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1361
19.4k
    {
1362
19.4k
        auto is_leaf = shift_ == BL;
1363
19.4k
        auto child   = node_->inner()[0];
1364
19.4k
        return is_leaf ? make_full_leaf_pos(child).visit(v, args...)
1365
19.4k
                       : make_full_pos(child, shift_ - B).visit(v, args...);
1366
19.4k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1361
723
    {
1362
723
        auto is_leaf = shift_ == BL;
1363
723
        auto child   = node_->inner()[0];
1364
723
        return is_leaf ? make_full_leaf_pos(child).visit(v, args...)
1365
723
                       : make_full_pos(child, shift_ - B).visit(v, args...);
1366
723
    }
1367
1368
    template <typename Visitor, typename... Args>
1369
    decltype(auto) first_sub_leaf(Visitor v, Args&&... args)
1370
14.8k
    {
1371
14.8k
        assert(shift_ == BL);
1372
14.8k
        auto child = node_->inner()[0];
1373
14.8k
        return make_full_leaf_pos(child).visit(v, args...);
1374
14.8k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1370
577
    {
1371
577
        assert(shift_ == BL);
1372
577
        auto child = node_->inner()[0];
1373
577
        return make_full_leaf_pos(child).visit(v, args...);
1374
577
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1370
3.50k
    {
1371
3.50k
        assert(shift_ == BL);
1372
3.50k
        auto child = node_->inner()[0];
1373
3.50k
        return make_full_leaf_pos(child).visit(v, args...);
1374
3.50k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1370
940
    {
1371
940
        assert(shift_ == BL);
1372
940
        auto child = node_->inner()[0];
1373
940
        return make_full_leaf_pos(child).visit(v, args...);
1374
940
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1370
9.84k
    {
1371
9.84k
        assert(shift_ == BL);
1372
9.84k
        auto child = node_->inner()[0];
1373
9.84k
        return make_full_leaf_pos(child).visit(v, args...);
1374
9.84k
    }
1375
1376
    template <typename Visitor, typename... Args>
1377
    decltype(auto) first_sub_inner(Visitor v, Args&&... args)
1378
    {
1379
        assert(shift_ >= BL);
1380
        auto child = node_->inner()[0];
1381
        return make_full_pos(child, shift_ - B).visit(v, args...);
1382
    }
1383
1384
    template <typename Visitor, typename... Args>
1385
    decltype(auto) nth_sub(count_t idx, Visitor v, Args&&... args)
1386
    {
1387
        assert(idx < count());
1388
        auto is_leaf = shift_ == BL;
1389
        auto child   = node_->inner()[idx];
1390
        return is_leaf ? make_full_leaf_pos(child).visit(v, args...)
1391
                       : make_full_pos(child, shift_ - B).visit(v, args...);
1392
    }
1393
1394
    template <typename Visitor, typename... Args>
1395
    decltype(auto) nth_sub_leaf(count_t idx, Visitor v, Args&&... args)
1396
    {
1397
        assert(shift_ == BL);
1398
        assert(idx < count());
1399
        auto child = node_->inner()[idx];
1400
        return make_full_leaf_pos(child).visit(v, args...);
1401
    }
1402
1403
    template <typename Visitor, typename... Args>
1404
    decltype(auto) visit(Visitor v, Args&&... args)
1405
639k
    {
1406
639k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
639k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor)
Line
Count
Source
1405
9.83k
    {
1406
9.83k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
9.83k
    }
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
1405
1.28k
    {
1406
1.28k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
1.28k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&)
Line
Count
Source
1405
2.02k
    {
1406
2.02k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
2.02k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&)
Line
Count
Source
1405
2.07k
    {
1406
2.07k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
2.07k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&&)
Line
Count
Source
1405
2.75k
    {
1406
2.75k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
2.75k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&&)
Line
Count
Source
1405
1.22k
    {
1406
1.22k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
1.22k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1405
1.05k
    {
1406
1.05k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
1.05k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
1405
279k
    {
1406
279k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
279k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1405
25.2k
    {
1406
25.2k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
25.2k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1405
3.93k
    {
1406
3.93k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
3.93k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1405
2.33k
    {
1406
2.33k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
2.33k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&)
Line
Count
Source
1405
6.47k
    {
1406
6.47k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
6.47k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1405
2.52k
    {
1406
2.52k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
2.52k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1405
3.05k
    {
1406
3.05k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
3.05k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_right_visitor, unsigned int>(immer::detail::rbts::dec_right_visitor, unsigned int&&)
Line
Count
Source
1405
1.84k
    {
1406
1.84k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
1.84k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1405
4.83k
    {
1406
4.83k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
4.83k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1405
2.78k
    {
1406
2.78k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
2.78k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1405
1.63k
    {
1406
1.63k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
1.63k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1405
254k
    {
1406
254k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
254k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1405
27.7k
    {
1406
27.7k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
27.7k
    }
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1405
2.31k
    {
1406
2.31k
        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
1407
2.31k
    }
1408
};
1409
1410
template <typename NodeT>
1411
full_pos<NodeT> make_full_pos(NodeT* node, shift_t shift)
1412
629k
{
1413
629k
    assert(node);
1414
629k
    assert(shift >= NodeT::bits_leaf);
1415
629k
    return {node, shift};
1416
629k
}
1417
1418
template <typename NodeT>
1419
struct relaxed_pos
1420
{
1421
    static constexpr auto B  = NodeT::bits;
1422
    static constexpr auto BL = NodeT::bits_leaf;
1423
1424
    using node_t    = NodeT;
1425
    using relaxed_t = typename NodeT::relaxed_t;
1426
    node_t* node_;
1427
    shift_t shift_;
1428
    relaxed_t* relaxed_;
1429
1430
10.3M
    count_t count() const { return relaxed_->d.count; }
1431
7.49M
    node_t* node() const { return node_; }
1432
5.17M
    size_t size() const { return relaxed_->d.sizes[relaxed_->d.count - 1]; }
1433
3.26M
    shift_t shift() const { return shift_; }
1434
109k
    count_t subindex(size_t idx) const { return index(idx); }
1435
28.1k
    relaxed_t* relaxed() const { return relaxed_; }
1436
1437
    size_t size_before(count_t offset) const
1438
6.12M
    {
1439
6.12M
        return offset ? relaxed_->d.sizes[offset - 1] : 0;
1440
6.12M
    }
1441
1442
    size_t size(count_t offset) const
1443
2.84M
    {
1444
2.84M
        return size_sbh(offset, size_before(offset));
1445
2.84M
    }
1446
1447
    size_t size_sbh(count_t offset, size_t size_before_hint) const
1448
2.95M
    {
1449
2.95M
        assert(size_before_hint == size_before(offset));
1450
2.95M
        return relaxed_->d.sizes[offset] - size_before_hint;
1451
2.95M
    }
1452
1453
    count_t index(size_t idx) const
1454
864k
    {
1455
864k
        auto offset = idx >> shift_;
1456
1.01M
        while (relaxed_->d.sizes[offset] <= idx)
1457
151k
            ++offset;
1458
864k
        return offset;
1459
864k
    }
1460
1461
    void copy_sizes(count_t offset, count_t n, size_t init, size_t* sizes)
1462
218k
    {
1463
218k
        auto e     = sizes + n;
1464
218k
        auto prev  = size_before(offset);
1465
218k
        auto these = relaxed_->d.sizes + offset;
1466
590k
        for (; sizes != e; ++sizes, ++these) {
1467
372k
            auto this_size = *these;
1468
372k
            init = *sizes = init + (this_size - prev);
1469
372k
            assert(init);
1470
372k
            prev = this_size;
1471
372k
        }
1472
218k
    }
1473
1474
    template <typename Visitor, typename... Args>
1475
    void each(Visitor v, Args&&... args)
1476
0
    {
1477
0
        each_left(v, relaxed_->d.count, args...);
1478
0
    }
1479
1480
    template <typename Visitor, typename... Args>
1481
    bool each_pred(Visitor v, Args&&... args)
1482
    {
1483
        auto p = node_->inner();
1484
        auto s = size_t{};
1485
        auto n = count();
1486
        if (shift_ == BL) {
1487
            for (auto i = count_t{0}; i < n; ++i) {
1488
                IMMER_PREFETCH(p + i + 1);
1489
                if (!make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
1490
                         .visit(v, args...))
1491
                    return false;
1492
                s = relaxed_->d.sizes[i];
1493
            }
1494
        } else {
1495
            auto ss = shift_ - B;
1496
            for (auto i = count_t{0}; i < n; ++i) {
1497
                if (!visit_maybe_relaxed_sub(
1498
                        p[i], ss, relaxed_->d.sizes[i] - s, v, args...))
1499
                    return false;
1500
                s = relaxed_->d.sizes[i];
1501
            }
1502
        }
1503
        return true;
1504
    }
1505
1506
    template <typename Visitor, typename... Args>
1507
    bool each_pred_i(Visitor v, count_t i, count_t n, Args&&... args)
1508
    {
1509
        if (shift_ == BL) {
1510
            auto p = node_->inner();
1511
            auto s = i > 0 ? relaxed_->d.sizes[i - 1] : 0;
1512
            for (; i < n; ++i) {
1513
                IMMER_PREFETCH(p + i + 1);
1514
                if (!make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
1515
                         .visit(v, args...))
1516
                    return false;
1517
                s = relaxed_->d.sizes[i];
1518
            }
1519
        } else {
1520
            auto p  = node_->inner();
1521
            auto s  = i > 0 ? relaxed_->d.sizes[i - 1] : 0;
1522
            auto ss = shift_ - B;
1523
            for (; i < n; ++i) {
1524
                if (!visit_maybe_relaxed_sub(
1525
                        p[i], ss, relaxed_->d.sizes[i] - s, v, args...))
1526
                    return false;
1527
                s = relaxed_->d.sizes[i];
1528
            }
1529
        }
1530
        return true;
1531
    }
1532
1533
    template <typename Visitor, typename... Args>
1534
    bool each_pred_left(Visitor v, count_t n, Args&&... args)
1535
    {
1536
        auto p = node_->inner();
1537
        auto s = size_t{};
1538
        if (shift_ == BL) {
1539
            for (auto i = count_t{0}; i < n; ++i) {
1540
                IMMER_PREFETCH(p + i + 1);
1541
                if (!make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
1542
                         .visit(v, args...))
1543
                    return false;
1544
                s = relaxed_->d.sizes[i];
1545
            }
1546
        } else {
1547
            auto ss = shift_ - B;
1548
            for (auto i = count_t{0}; i < n; ++i) {
1549
                if (!visit_maybe_relaxed_sub(
1550
                        p[i], ss, relaxed_->d.sizes[i] - s, v, args...))
1551
                    return false;
1552
                s = relaxed_->d.sizes[i];
1553
            }
1554
        }
1555
        return true;
1556
    }
1557
1558
    template <typename Visitor, typename... Args>
1559
    bool each_pred_right(Visitor v, count_t start, Args&&... args)
1560
    {
1561
        assert(start > 0);
1562
        assert(start <= relaxed_->d.count);
1563
        auto s = relaxed_->d.sizes[start - 1];
1564
        auto p = node_->inner();
1565
        if (shift_ == BL) {
1566
            for (auto i = start; i < relaxed_->d.count; ++i) {
1567
                IMMER_PREFETCH(p + i + 1);
1568
                if (!make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
1569
                         .visit(v, args...))
1570
                    return false;
1571
                s = relaxed_->d.sizes[i];
1572
            }
1573
        } else {
1574
            auto ss = shift_ - B;
1575
            for (auto i = start; i < relaxed_->d.count; ++i) {
1576
                if (!visit_maybe_relaxed_sub(
1577
                        p[i], ss, relaxed_->d.sizes[i] - s, v, args...))
1578
                    return false;
1579
                s = relaxed_->d.sizes[i];
1580
            }
1581
        }
1582
        return true;
1583
    }
1584
1585
    template <typename Visitor, typename... Args>
1586
    void each_i(Visitor v, count_t i, count_t n, Args&&... args)
1587
    {
1588
        if (shift_ == BL) {
1589
            auto p = node_->inner();
1590
            auto s = i > 0 ? relaxed_->d.sizes[i - 1] : 0;
1591
            for (; i < n; ++i) {
1592
                IMMER_PREFETCH(p + i + 1);
1593
                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
1594
                    .visit(v, args...);
1595
                s = relaxed_->d.sizes[i];
1596
            }
1597
        } else {
1598
            auto p  = node_->inner();
1599
            auto s  = i > 0 ? relaxed_->d.sizes[i - 1] : 0;
1600
            auto ss = shift_ - B;
1601
            for (; i < n; ++i) {
1602
                visit_maybe_relaxed_sub(
1603
                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
1604
                s = relaxed_->d.sizes[i];
1605
            }
1606
        }
1607
    }
1608
1609
    template <typename Visitor, typename... Args>
1610
    void each_sub(Visitor v, Args&&... args)
1611
    {
1612
        each_left(v, relaxed_->d.count, args...);
1613
    }
1614
1615
    template <typename Visitor, typename... Args>
1616
    void each_left_sub(Visitor v, Args&&... args)
1617
1.85M
    {
1618
1.85M
        each_left(v, relaxed_->d.count - 1, args...);
1619
1.85M
    }
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
1617
926k
    {
1618
926k
        each_left(v, relaxed_->d.count - 1, args...);
1619
926k
    }
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1617
216k
    {
1618
216k
        each_left(v, relaxed_->d.count - 1, args...);
1619
216k
    }
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1617
710k
    {
1618
710k
        each_left(v, relaxed_->d.count - 1, args...);
1619
710k
    }
1620
1621
    template <typename Visitor, typename... Args>
1622
    void each_left(Visitor v, count_t n, Args&&... args)
1623
1.85M
    {
1624
1.85M
        auto p = node_->inner();
1625
1.85M
        auto s = size_t{};
1626
1.85M
        if (shift_ == BL) {
1627
543k
            for (auto i = count_t{0}; i < n; ++i) {
1628
336k
                IMMER_PREFETCH(p + i + 1);
1629
336k
                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
1630
336k
                    .visit(v, args...);
1631
336k
                s = relaxed_->d.sizes[i];
1632
336k
                assert(s);
1633
336k
            }
1634
1.64M
        } else {
1635
1.64M
            auto ss = shift_ - B;
1636
4.31M
            for (auto i = count_t{0}; i < n; ++i) {
1637
2.67M
                visit_maybe_relaxed_sub(
1638
2.67M
                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
1639
2.67M
                s = relaxed_->d.sizes[i];
1640
2.67M
                assert(s);
1641
2.67M
            }
1642
1.64M
        }
1643
1.85M
    }
Unexecuted instantiation: void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor, unsigned int)
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, unsigned int, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
1623
926k
    {
1624
926k
        auto p = node_->inner();
1625
926k
        auto s = size_t{};
1626
926k
        if (shift_ == BL) {
1627
271k
            for (auto i = count_t{0}; i < n; ++i) {
1628
168k
                IMMER_PREFETCH(p + i + 1);
1629
168k
                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
1630
168k
                    .visit(v, args...);
1631
168k
                s = relaxed_->d.sizes[i];
1632
168k
                assert(s);
1633
168k
            }
1634
823k
        } else {
1635
823k
            auto ss = shift_ - B;
1636
2.15M
            for (auto i = count_t{0}; i < n; ++i) {
1637
1.33M
                visit_maybe_relaxed_sub(
1638
1.33M
                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
1639
1.33M
                s = relaxed_->d.sizes[i];
1640
                assert(s);
1641
1.33M
            }
1642
823k
        }
1643
926k
    }
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, unsigned int, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1623
216k
    {
1624
216k
        auto p = node_->inner();
1625
216k
        auto s = size_t{};
1626
216k
        if (shift_ == BL) {
1627
107k
            for (auto i = count_t{0}; i < n; ++i) {
1628
70.6k
                IMMER_PREFETCH(p + i + 1);
1629
70.6k
                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
1630
70.6k
                    .visit(v, args...);
1631
70.6k
                s = relaxed_->d.sizes[i];
1632
70.6k
                assert(s);
1633
70.6k
            }
1634
178k
        } else {
1635
178k
            auto ss = shift_ - B;
1636
636k
            for (auto i = count_t{0}; i < n; ++i) {
1637
457k
                visit_maybe_relaxed_sub(
1638
457k
                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
1639
457k
                s = relaxed_->d.sizes[i];
1640
                assert(s);
1641
457k
            }
1642
178k
        }
1643
216k
    }
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, unsigned int, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1623
710k
    {
1624
710k
        auto p = node_->inner();
1625
710k
        auto s = size_t{};
1626
710k
        if (shift_ == BL) {
1627
163k
            for (auto i = count_t{0}; i < n; ++i) {
1628
97.8k
                IMMER_PREFETCH(p + i + 1);
1629
97.8k
                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
1630
97.8k
                    .visit(v, args...);
1631
97.8k
                s = relaxed_->d.sizes[i];
1632
97.8k
                assert(s);
1633
97.8k
            }
1634
644k
        } else {
1635
644k
            auto ss = shift_ - B;
1636
1.52M
            for (auto i = count_t{0}; i < n; ++i) {
1637
878k
                visit_maybe_relaxed_sub(
1638
878k
                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
1639
878k
                s = relaxed_->d.sizes[i];
1640
                assert(s);
1641
878k
            }
1642
644k
        }
1643
710k
    }
1644
1645
    template <typename Visitor, typename... Args>
1646
    void each_right_sub(Visitor v, Args&&... args)
1647
1.32M
    {
1648
1.32M
        each_right(v, 1, std::forward<Args>(args)...);
1649
1.32M
    }
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
1647
662k
    {
1648
662k
        each_right(v, 1, std::forward<Args>(args)...);
1649
662k
    }
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1647
228k
    {
1648
228k
        each_right(v, 1, std::forward<Args>(args)...);
1649
228k
    }
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1647
433k
    {
1648
433k
        each_right(v, 1, std::forward<Args>(args)...);
1649
433k
    }
1650
1651
    template <typename Visitor, typename... Args>
1652
    void each_right(Visitor v, count_t start, Args&&... args)
1653
1.33M
    {
1654
1.33M
        assert(start > 0);
1655
1.33M
        assert(start <= relaxed_->d.count);
1656
1.33M
        auto s = relaxed_->d.sizes[start - 1];
1657
1.33M
        auto p = node_->inner();
1658
1.33M
        if (shift_ == BL) {
1659
754k
            for (auto i = start; i < relaxed_->d.count; ++i) {
1660
529k
                IMMER_PREFETCH(p + i + 1);
1661
529k
                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
1662
529k
                    .visit(v, args...);
1663
529k
                s = relaxed_->d.sizes[i];
1664
529k
                assert(s);
1665
529k
            }
1666
1.11M
        } else {
1667
1.11M
            auto ss = shift_ - B;
1668
3.80M
            for (auto i = start; i < relaxed_->d.count; ++i) {
1669
2.68M
                visit_maybe_relaxed_sub(
1670
2.68M
                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
1671
2.68M
                s = relaxed_->d.sizes[i];
1672
2.68M
                assert(s);
1673
2.68M
            }
1674
1.11M
        }
1675
1.33M
    }
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, unsigned int, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
1653
662k
    {
1654
662k
        assert(start > 0);
1655
662k
        assert(start <= relaxed_->d.count);
1656
662k
        auto s = relaxed_->d.sizes[start - 1];
1657
662k
        auto p = node_->inner();
1658
662k
        if (shift_ == BL) {
1659
373k
            for (auto i = start; i < relaxed_->d.count; ++i) {
1660
262k
                IMMER_PREFETCH(p + i + 1);
1661
262k
                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
1662
262k
                    .visit(v, args...);
1663
262k
                s = relaxed_->d.sizes[i];
1664
262k
                assert(s);
1665
262k
            }
1666
551k
        } else {
1667
551k
            auto ss = shift_ - B;
1668
1.88M
            for (auto i = start; i < relaxed_->d.count; ++i) {
1669
1.33M
                visit_maybe_relaxed_sub(
1670
1.33M
                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
1671
1.33M
                s = relaxed_->d.sizes[i];
1672
                assert(s);
1673
1.33M
            }
1674
551k
        }
1675
662k
    }
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, unsigned int, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1653
228k
    {
1654
228k
        assert(start > 0);
1655
228k
        assert(start <= relaxed_->d.count);
1656
228k
        auto s = relaxed_->d.sizes[start - 1];
1657
228k
        auto p = node_->inner();
1658
228k
        if (shift_ == BL) {
1659
151k
            for (auto i = start; i < relaxed_->d.count; ++i) {
1660
110k
                IMMER_PREFETCH(p + i + 1);
1661
110k
                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
1662
110k
                    .visit(v, args...);
1663
110k
                s = relaxed_->d.sizes[i];
1664
110k
                assert(s);
1665
110k
            }
1666
187k
        } else {
1667
187k
            auto ss = shift_ - B;
1668
693k
            for (auto i = start; i < relaxed_->d.count; ++i) {
1669
505k
                visit_maybe_relaxed_sub(
1670
505k
                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
1671
505k
                s = relaxed_->d.sizes[i];
1672
                assert(s);
1673
505k
            }
1674
187k
        }
1675
228k
    }
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor, unsigned int)
Line
Count
Source
1653
15.7k
    {
1654
15.7k
        assert(start > 0);
1655
15.7k
        assert(start <= relaxed_->d.count);
1656
15.7k
        auto s = relaxed_->d.sizes[start - 1];
1657
15.7k
        auto p = node_->inner();
1658
15.7k
        if (shift_ == BL) {
1659
7.47k
            for (auto i = start; i < relaxed_->d.count; ++i) {
1660
3.60k
                IMMER_PREFETCH(p + i + 1);
1661
3.60k
                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
1662
3.60k
                    .visit(v, args...);
1663
3.60k
                s = relaxed_->d.sizes[i];
1664
3.60k
                assert(s);
1665
3.60k
            }
1666
11.9k
        } else {
1667
11.9k
            auto ss = shift_ - B;
1668
23.7k
            for (auto i = start; i < relaxed_->d.count; ++i) {
1669
11.8k
                visit_maybe_relaxed_sub(
1670
11.8k
                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
1671
11.8k
                s = relaxed_->d.sizes[i];
1672
                assert(s);
1673
11.8k
            }
1674
11.9k
        }
1675
15.7k
    }
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, unsigned int, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1653
433k
    {
1654
433k
        assert(start > 0);
1655
433k
        assert(start <= relaxed_->d.count);
1656
433k
        auto s = relaxed_->d.sizes[start - 1];
1657
433k
        auto p = node_->inner();
1658
433k
        if (shift_ == BL) {
1659
222k
            for (auto i = start; i < relaxed_->d.count; ++i) {
1660
151k
                IMMER_PREFETCH(p + i + 1);
1661
151k
                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
1662
151k
                    .visit(v, args...);
1663
151k
                s = relaxed_->d.sizes[i];
1664
151k
                assert(s);
1665
151k
            }
1666
363k
        } else {
1667
363k
            auto ss = shift_ - B;
1668
1.19M
            for (auto i = start; i < relaxed_->d.count; ++i) {
1669
831k
                visit_maybe_relaxed_sub(
1670
831k
                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
1671
831k
                s = relaxed_->d.sizes[i];
1672
                assert(s);
1673
831k
            }
1674
363k
        }
1675
433k
    }
1676
1677
    template <typename Visitor, typename... Args>
1678
    decltype(auto) towards(Visitor v, size_t idx, Args&&... args)
1679
    {
1680
        return towards_oh(v, idx, subindex(idx), args...);
1681
    }
1682
1683
    template <typename Visitor, typename... Args>
1684
    decltype(auto)
1685
    towards_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args)
1686
178k
    {
1687
178k
        assert(offset_hint == index(idx));
1688
178k
        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
1689
178k
        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
1690
178k
    }
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
1686
28.1k
    {
1687
28.1k
        assert(offset_hint == index(idx));
1688
28.1k
        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
1689
28.1k
        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
1690
28.1k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int)
Line
Count
Source
1686
10.0k
    {
1687
10.0k
        assert(offset_hint == index(idx));
1688
10.0k
        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
1689
10.0k
        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
1690
10.0k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int)
Line
Count
Source
1686
8.27k
    {
1687
8.27k
        assert(offset_hint == index(idx));
1688
8.27k
        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
1689
8.27k
        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
1690
8.27k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&&)
Line
Count
Source
1686
25.3k
    {
1687
25.3k
        assert(offset_hint == index(idx));
1688
25.3k
        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
1689
25.3k
        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
1690
25.3k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1686
35.1k
    {
1687
35.1k
        assert(offset_hint == index(idx));
1688
35.1k
        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
1689
35.1k
        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
1690
35.1k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1686
37.1k
    {
1687
37.1k
        assert(offset_hint == index(idx));
1688
37.1k
        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
1689
37.1k
        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
1690
37.1k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1686
17.9k
    {
1687
17.9k
        assert(offset_hint == index(idx));
1688
17.9k
        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
1689
17.9k
        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
1690
17.9k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1686
16.8k
    {
1687
16.8k
        assert(offset_hint == index(idx));
1688
16.8k
        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
1689
16.8k
        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
1690
16.8k
    }
1691
1692
    template <typename Visitor, typename... Args>
1693
    decltype(auto) towards_oh_sbh(Visitor v,
1694
                                  size_t idx,
1695
                                  count_t offset_hint,
1696
                                  size_t left_size_hint,
1697
                                  Args&&... args)
1698
178k
    {
1699
178k
        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
1700
178k
    }
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned long, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
1698
28.1k
    {
1699
28.1k
        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
1700
28.1k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int, unsigned long)
Line
Count
Source
1698
10.0k
    {
1699
10.0k
        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
1700
10.0k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int, unsigned long)
Line
Count
Source
1698
8.27k
    {
1699
8.27k
        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
1700
8.27k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&)
Line
Count
Source
1698
25.3k
    {
1699
25.3k
        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
1700
25.3k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1698
35.1k
    {
1699
35.1k
        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
1700
35.1k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1698
37.1k
    {
1699
37.1k
        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
1700
37.1k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1698
17.9k
    {
1699
17.9k
        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
1700
17.9k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1698
16.8k
    {
1699
16.8k
        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
1700
16.8k
    }
1701
1702
    template <typename Visitor, typename... Args>
1703
    decltype(auto)
1704
    towards_sub_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args)
1705
109k
    {
1706
109k
        assert(offset_hint == index(idx));
1707
109k
        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
1708
109k
        return towards_sub_oh_sbh(v, idx, offset_hint, left_size, args...);
1709
109k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int)
Line
Count
Source
1705
1.42k
    {
1706
1.42k
        assert(offset_hint == index(idx));
1707
1.42k
        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
1708
1.42k
        return towards_sub_oh_sbh(v, idx, offset_hint, left_size, args...);
1709
1.42k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int)
Line
Count
Source
1705
107k
    {
1706
107k
        assert(offset_hint == index(idx));
1707
107k
        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
1708
107k
        return towards_sub_oh_sbh(v, idx, offset_hint, left_size, args...);
1709
107k
    }
1710
1711
    template <typename Visitor, typename... Args>
1712
    decltype(auto) towards_sub_oh_sbh(Visitor v,
1713
                                      size_t idx,
1714
                                      count_t offset_hint,
1715
                                      size_t left_size_hint,
1716
                                      Args&&... args)
1717
288k
    {
1718
288k
        assert(offset_hint == index(idx));
1719
288k
        assert(left_size_hint ==
1720
288k
               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
1721
288k
        auto child     = node_->inner()[offset_hint];
1722
288k
        auto is_leaf   = shift_ == BL;
1723
288k
        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
1724
288k
        auto next_idx  = idx - left_size_hint;
1725
288k
        return is_leaf
1726
288k
                   ? make_leaf_sub_pos(child, next_size)
1727
37.0k
                         .visit(v, next_idx, args...)
1728
288k
                   : visit_maybe_relaxed_sub(
1729
251k
                         child, shift_ - B, next_size, v, next_idx, args...);
1730
288k
    }
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned long, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
1717
28.1k
    {
1718
28.1k
        assert(offset_hint == index(idx));
1719
28.1k
        assert(left_size_hint ==
1720
28.1k
               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
1721
28.1k
        auto child     = node_->inner()[offset_hint];
1722
28.1k
        auto is_leaf   = shift_ == BL;
1723
28.1k
        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
1724
28.1k
        auto next_idx  = idx - left_size_hint;
1725
28.1k
        return is_leaf
1726
28.1k
                   ? make_leaf_sub_pos(child, next_size)
1727
3.32k
                         .visit(v, next_idx, args...)
1728
28.1k
                   : visit_maybe_relaxed_sub(
1729
24.8k
                         child, shift_ - B, next_size, v, next_idx, args...);
1730
28.1k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int, unsigned long)
Line
Count
Source
1717
10.0k
    {
1718
10.0k
        assert(offset_hint == index(idx));
1719
10.0k
        assert(left_size_hint ==
1720
10.0k
               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
1721
10.0k
        auto child     = node_->inner()[offset_hint];
1722
10.0k
        auto is_leaf   = shift_ == BL;
1723
10.0k
        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
1724
10.0k
        auto next_idx  = idx - left_size_hint;
1725
10.0k
        return is_leaf
1726
10.0k
                   ? make_leaf_sub_pos(child, next_size)
1727
734
                         .visit(v, next_idx, args...)
1728
10.0k
                   : visit_maybe_relaxed_sub(
1729
9.29k
                         child, shift_ - B, next_size, v, next_idx, args...);
1730
10.0k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int, unsigned long)
Line
Count
Source
1717
8.27k
    {
1718
8.27k
        assert(offset_hint == index(idx));
1719
8.27k
        assert(left_size_hint ==
1720
8.27k
               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
1721
8.27k
        auto child     = node_->inner()[offset_hint];
1722
8.27k
        auto is_leaf   = shift_ == BL;
1723
8.27k
        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
1724
8.27k
        auto next_idx  = idx - left_size_hint;
1725
8.27k
        return is_leaf
1726
8.27k
                   ? make_leaf_sub_pos(child, next_size)
1727
2.76k
                         .visit(v, next_idx, args...)
1728
8.27k
                   : visit_maybe_relaxed_sub(
1729
5.50k
                         child, shift_ - B, next_size, v, next_idx, args...);
1730
8.27k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int, unsigned long)
Line
Count
Source
1717
1.42k
    {
1718
1.42k
        assert(offset_hint == index(idx));
1719
1.42k
        assert(left_size_hint ==
1720
1.42k
               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
1721
1.42k
        auto child     = node_->inner()[offset_hint];
1722
1.42k
        auto is_leaf   = shift_ == BL;
1723
1.42k
        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
1724
1.42k
        auto next_idx  = idx - left_size_hint;
1725
1.42k
        return is_leaf
1726
1.42k
                   ? make_leaf_sub_pos(child, next_size)
1727
0
                         .visit(v, next_idx, args...)
1728
1.42k
                   : visit_maybe_relaxed_sub(
1729
1.42k
                         child, shift_ - B, next_size, v, next_idx, args...);
1730
1.42k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int, unsigned long)
Line
Count
Source
1717
107k
    {
1718
107k
        assert(offset_hint == index(idx));
1719
107k
        assert(left_size_hint ==
1720
107k
               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
1721
107k
        auto child     = node_->inner()[offset_hint];
1722
107k
        auto is_leaf   = shift_ == BL;
1723
107k
        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
1724
107k
        auto next_idx  = idx - left_size_hint;
1725
107k
        return is_leaf
1726
107k
                   ? make_leaf_sub_pos(child, next_size)
1727
11.9k
                         .visit(v, next_idx, args...)
1728
107k
                   : visit_maybe_relaxed_sub(
1729
95.8k
                         child, shift_ - B, next_size, v, next_idx, args...);
1730
107k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&)
Line
Count
Source
1717
25.3k
    {
1718
25.3k
        assert(offset_hint == index(idx));
1719
25.3k
        assert(left_size_hint ==
1720
25.3k
               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
1721
25.3k
        auto child     = node_->inner()[offset_hint];
1722
25.3k
        auto is_leaf   = shift_ == BL;
1723
25.3k
        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
1724
25.3k
        auto next_idx  = idx - left_size_hint;
1725
25.3k
        return is_leaf
1726
25.3k
                   ? make_leaf_sub_pos(child, next_size)
1727
3.54k
                         .visit(v, next_idx, args...)
1728
25.3k
                   : visit_maybe_relaxed_sub(
1729
21.8k
                         child, shift_ - B, next_size, v, next_idx, args...);
1730
25.3k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1717
35.1k
    {
1718
35.1k
        assert(offset_hint == index(idx));
1719
35.1k
        assert(left_size_hint ==
1720
35.1k
               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
1721
35.1k
        auto child     = node_->inner()[offset_hint];
1722
35.1k
        auto is_leaf   = shift_ == BL;
1723
35.1k
        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
1724
35.1k
        auto next_idx  = idx - left_size_hint;
1725
35.1k
        return is_leaf
1726
35.1k
                   ? make_leaf_sub_pos(child, next_size)
1727
2.41k
                         .visit(v, next_idx, args...)
1728
35.1k
                   : visit_maybe_relaxed_sub(
1729
32.7k
                         child, shift_ - B, next_size, v, next_idx, args...);
1730
35.1k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1717
37.1k
    {
1718
37.1k
        assert(offset_hint == index(idx));
1719
37.1k
        assert(left_size_hint ==
1720
37.1k
               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
1721
37.1k
        auto child     = node_->inner()[offset_hint];
1722
37.1k
        auto is_leaf   = shift_ == BL;
1723
37.1k
        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
1724
37.1k
        auto next_idx  = idx - left_size_hint;
1725
37.1k
        return is_leaf
1726
37.1k
                   ? make_leaf_sub_pos(child, next_size)
1727
1.61k
                         .visit(v, next_idx, args...)
1728
37.1k
                   : visit_maybe_relaxed_sub(
1729
35.5k
                         child, shift_ - B, next_size, v, next_idx, args...);
1730
37.1k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1717
17.9k
    {
1718
17.9k
        assert(offset_hint == index(idx));
1719
17.9k
        assert(left_size_hint ==
1720
17.9k
               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
1721
17.9k
        auto child     = node_->inner()[offset_hint];
1722
17.9k
        auto is_leaf   = shift_ == BL;
1723
17.9k
        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
1724
17.9k
        auto next_idx  = idx - left_size_hint;
1725
17.9k
        return is_leaf
1726
17.9k
                   ? make_leaf_sub_pos(child, next_size)
1727
4.54k
                         .visit(v, next_idx, args...)
1728
17.9k
                   : visit_maybe_relaxed_sub(
1729
13.3k
                         child, shift_ - B, next_size, v, next_idx, args...);
1730
17.9k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1717
16.8k
    {
1718
16.8k
        assert(offset_hint == index(idx));
1719
16.8k
        assert(left_size_hint ==
1720
16.8k
               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
1721
16.8k
        auto child     = node_->inner()[offset_hint];
1722
16.8k
        auto is_leaf   = shift_ == BL;
1723
16.8k
        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
1724
16.8k
        auto next_idx  = idx - left_size_hint;
1725
16.8k
        return is_leaf
1726
16.8k
                   ? make_leaf_sub_pos(child, next_size)
1727
6.21k
                         .visit(v, next_idx, args...)
1728
16.8k
                   : visit_maybe_relaxed_sub(
1729
10.6k
                         child, shift_ - B, next_size, v, next_idx, args...);
1730
16.8k
    }
1731
1732
    template <typename Visitor, typename... Args>
1733
    decltype(auto) last_oh_csh(Visitor v,
1734
                               count_t offset_hint,
1735
                               size_t child_size_hint,
1736
                               Args&&... args)
1737
950k
    {
1738
950k
        assert(offset_hint == count() - 1);
1739
950k
        assert(child_size_hint == size(offset_hint));
1740
950k
        auto child   = node_->inner()[offset_hint];
1741
950k
        auto is_leaf = shift_ == BL;
1742
950k
        return is_leaf
1743
950k
                   ? make_leaf_sub_pos(child, child_size_hint).visit(v, args...)
1744
950k
                   : visit_maybe_relaxed_sub(
1745
950k
                         child, shift_ - B, child_size_hint, v, args...);
1746
950k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh_csh<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned int, unsigned long, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
Line
Count
Source
1737
44.2k
    {
1738
44.2k
        assert(offset_hint == count() - 1);
1739
44.2k
        assert(child_size_hint == size(offset_hint));
1740
44.2k
        auto child   = node_->inner()[offset_hint];
1741
44.2k
        auto is_leaf = shift_ == BL;
1742
44.2k
        return is_leaf
1743
44.2k
                   ? make_leaf_sub_pos(child, child_size_hint).visit(v, args...)
1744
44.2k
                   : visit_maybe_relaxed_sub(
1745
44.2k
                         child, shift_ - B, child_size_hint, v, args...);
1746
44.2k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh_csh<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
Line
Count
Source
1737
884k
    {
1738
884k
        assert(offset_hint == count() - 1);
1739
884k
        assert(child_size_hint == size(offset_hint));
1740
884k
        auto child   = node_->inner()[offset_hint];
1741
884k
        auto is_leaf = shift_ == BL;
1742
884k
        return is_leaf
1743
884k
                   ? make_leaf_sub_pos(child, child_size_hint).visit(v, args...)
1744
884k
                   : visit_maybe_relaxed_sub(
1745
884k
                         child, shift_ - B, child_size_hint, v, args...);
1746
884k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh_csh<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
Line
Count
Source
1737
21.6k
    {
1738
21.6k
        assert(offset_hint == count() - 1);
1739
21.6k
        assert(child_size_hint == size(offset_hint));
1740
21.6k
        auto child   = node_->inner()[offset_hint];
1741
21.6k
        auto is_leaf = shift_ == BL;
1742
21.6k
        return is_leaf
1743
21.6k
                   ? make_leaf_sub_pos(child, child_size_hint).visit(v, args...)
1744
21.6k
                   : visit_maybe_relaxed_sub(
1745
21.6k
                         child, shift_ - B, child_size_hint, v, args...);
1746
21.6k
    }
1747
1748
    template <typename Visitor, typename... Args>
1749
    decltype(auto) last_sub(Visitor v, Args&&... args)
1750
926k
    {
1751
926k
        auto offset     = relaxed_->d.count - 1;
1752
926k
        auto child      = node_->inner()[offset];
1753
926k
        auto child_size = size(offset);
1754
926k
        auto is_leaf    = shift_ == BL;
1755
926k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1756
926k
                       : visit_maybe_relaxed_sub(
1757
823k
                             child, shift_ - B, child_size, v, args...);
1758
926k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1750
3.34k
    {
1751
3.34k
        auto offset     = relaxed_->d.count - 1;
1752
3.34k
        auto child      = node_->inner()[offset];
1753
3.34k
        auto child_size = size(offset);
1754
3.34k
        auto is_leaf    = shift_ == BL;
1755
3.34k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1756
3.34k
                       : visit_maybe_relaxed_sub(
1757
3.34k
                             child, shift_ - B, child_size, v, args...);
1758
3.34k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1750
2.11k
    {
1751
2.11k
        auto offset     = relaxed_->d.count - 1;
1752
2.11k
        auto child      = node_->inner()[offset];
1753
2.11k
        auto child_size = size(offset);
1754
2.11k
        auto is_leaf    = shift_ == BL;
1755
2.11k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1756
2.11k
                       : visit_maybe_relaxed_sub(
1757
2.11k
                             child, shift_ - B, child_size, v, args...);
1758
2.11k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1750
2.04k
    {
1751
2.04k
        auto offset     = relaxed_->d.count - 1;
1752
2.04k
        auto child      = node_->inner()[offset];
1753
2.04k
        auto child_size = size(offset);
1754
2.04k
        auto is_leaf    = shift_ == BL;
1755
2.04k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1756
2.04k
                       : visit_maybe_relaxed_sub(
1757
782
                             child, shift_ - B, child_size, v, args...);
1758
2.04k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1750
2.09k
    {
1751
2.09k
        auto offset     = relaxed_->d.count - 1;
1752
2.09k
        auto child      = node_->inner()[offset];
1753
2.09k
        auto child_size = size(offset);
1754
2.09k
        auto is_leaf    = shift_ == BL;
1755
2.09k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1756
2.09k
                       : visit_maybe_relaxed_sub(
1757
1.35k
                             child, shift_ - B, child_size, v, args...);
1758
2.09k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1750
206k
    {
1751
206k
        auto offset     = relaxed_->d.count - 1;
1752
206k
        auto child      = node_->inner()[offset];
1753
206k
        auto child_size = size(offset);
1754
206k
        auto is_leaf    = shift_ == BL;
1755
206k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1756
206k
                       : visit_maybe_relaxed_sub(
1757
171k
                             child, shift_ - B, child_size, v, args...);
1758
206k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1750
194k
    {
1751
194k
        auto offset     = relaxed_->d.count - 1;
1752
194k
        auto child      = node_->inner()[offset];
1753
194k
        auto child_size = size(offset);
1754
194k
        auto is_leaf    = shift_ == BL;
1755
194k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1756
194k
                       : visit_maybe_relaxed_sub(
1757
194k
                             child, shift_ - B, child_size, v, args...);
1758
194k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1750
229k
    {
1751
229k
        auto offset     = relaxed_->d.count - 1;
1752
229k
        auto child      = node_->inner()[offset];
1753
229k
        auto child_size = size(offset);
1754
229k
        auto is_leaf    = shift_ == BL;
1755
229k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1756
229k
                       : visit_maybe_relaxed_sub(
1757
229k
                             child, shift_ - B, child_size, v, args...);
1758
229k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1750
2.08k
    {
1751
2.08k
        auto offset     = relaxed_->d.count - 1;
1752
2.08k
        auto child      = node_->inner()[offset];
1753
2.08k
        auto child_size = size(offset);
1754
2.08k
        auto is_leaf    = shift_ == BL;
1755
2.08k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1756
2.08k
                       : visit_maybe_relaxed_sub(
1757
745
                             child, shift_ - B, child_size, v, args...);
1758
2.08k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1750
39.6k
    {
1751
39.6k
        auto offset     = relaxed_->d.count - 1;
1752
39.6k
        auto child      = node_->inner()[offset];
1753
39.6k
        auto child_size = size(offset);
1754
39.6k
        auto is_leaf    = shift_ == BL;
1755
39.6k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1756
39.6k
                       : visit_maybe_relaxed_sub(
1757
6.51k
                             child, shift_ - B, child_size, v, args...);
1758
39.6k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1750
244k
    {
1751
244k
        auto offset     = relaxed_->d.count - 1;
1752
244k
        auto child      = node_->inner()[offset];
1753
244k
        auto child_size = size(offset);
1754
244k
        auto is_leaf    = shift_ == BL;
1755
244k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1756
244k
                       : visit_maybe_relaxed_sub(
1757
213k
                             child, shift_ - B, child_size, v, args...);
1758
244k
    }
1759
1760
    template <typename Visitor, typename... Args>
1761
    decltype(auto) first_sub(Visitor v, Args&&... args)
1762
551k
    {
1763
551k
        auto child      = node_->inner()[0];
1764
551k
        auto child_size = relaxed_->d.sizes[0];
1765
551k
        auto is_leaf    = shift_ == BL;
1766
551k
        assert(child_size);
1767
551k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1768
551k
                       : visit_maybe_relaxed_sub(
1769
551k
                             child, shift_ - B, child_size, v, args...);
1770
551k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1762
5.86k
    {
1763
5.86k
        auto child      = node_->inner()[0];
1764
5.86k
        auto child_size = relaxed_->d.sizes[0];
1765
5.86k
        auto is_leaf    = shift_ == BL;
1766
5.86k
        assert(child_size);
1767
5.86k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1768
5.86k
                       : visit_maybe_relaxed_sub(
1769
5.86k
                             child, shift_ - B, child_size, v, args...);
1770
5.86k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1762
11.1k
    {
1763
11.1k
        auto child      = node_->inner()[0];
1764
11.1k
        auto child_size = relaxed_->d.sizes[0];
1765
11.1k
        auto is_leaf    = shift_ == BL;
1766
11.1k
        assert(child_size);
1767
11.1k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1768
11.1k
                       : visit_maybe_relaxed_sub(
1769
11.1k
                             child, shift_ - B, child_size, v, args...);
1770
11.1k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1762
170k
    {
1763
170k
        auto child      = node_->inner()[0];
1764
170k
        auto child_size = relaxed_->d.sizes[0];
1765
170k
        auto is_leaf    = shift_ == BL;
1766
170k
        assert(child_size);
1767
170k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1768
170k
                       : visit_maybe_relaxed_sub(
1769
170k
                             child, shift_ - B, child_size, v, args...);
1770
170k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1762
13.8k
    {
1763
13.8k
        auto child      = node_->inner()[0];
1764
13.8k
        auto child_size = relaxed_->d.sizes[0];
1765
13.8k
        auto is_leaf    = shift_ == BL;
1766
13.8k
        assert(child_size);
1767
13.8k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1768
13.8k
                       : visit_maybe_relaxed_sub(
1769
13.8k
                             child, shift_ - B, child_size, v, args...);
1770
13.8k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1762
124k
    {
1763
124k
        auto child      = node_->inner()[0];
1764
124k
        auto child_size = relaxed_->d.sizes[0];
1765
124k
        auto is_leaf    = shift_ == BL;
1766
124k
        assert(child_size);
1767
124k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1768
124k
                       : visit_maybe_relaxed_sub(
1769
124k
                             child, shift_ - B, child_size, v, args...);
1770
124k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1762
225k
    {
1763
225k
        auto child      = node_->inner()[0];
1764
225k
        auto child_size = relaxed_->d.sizes[0];
1765
225k
        auto is_leaf    = shift_ == BL;
1766
225k
        assert(child_size);
1767
225k
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1768
225k
                       : visit_maybe_relaxed_sub(
1769
225k
                             child, shift_ - B, child_size, v, args...);
1770
225k
    }
1771
1772
    template <typename Visitor, typename... Args>
1773
    decltype(auto) first_sub_leaf(Visitor v, Args&&... args)
1774
110k
    {
1775
110k
        assert(shift_ == BL);
1776
110k
        auto child      = node_->inner()[0];
1777
110k
        auto child_size = relaxed_->d.sizes[0];
1778
110k
        return make_leaf_sub_pos(child, child_size).visit(v, args...);
1779
110k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1774
1.53k
    {
1775
1.53k
        assert(shift_ == BL);
1776
1.53k
        auto child      = node_->inner()[0];
1777
1.53k
        auto child_size = relaxed_->d.sizes[0];
1778
1.53k
        return make_leaf_sub_pos(child, child_size).visit(v, args...);
1779
1.53k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1774
38.8k
    {
1775
38.8k
        assert(shift_ == BL);
1776
38.8k
        auto child      = node_->inner()[0];
1777
38.8k
        auto child_size = relaxed_->d.sizes[0];
1778
38.8k
        return make_leaf_sub_pos(child, child_size).visit(v, args...);
1779
38.8k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1774
3.71k
    {
1775
3.71k
        assert(shift_ == BL);
1776
3.71k
        auto child      = node_->inner()[0];
1777
3.71k
        auto child_size = relaxed_->d.sizes[0];
1778
3.71k
        return make_leaf_sub_pos(child, child_size).visit(v, args...);
1779
3.71k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1774
66.4k
    {
1775
66.4k
        assert(shift_ == BL);
1776
66.4k
        auto child      = node_->inner()[0];
1777
66.4k
        auto child_size = relaxed_->d.sizes[0];
1778
66.4k
        return make_leaf_sub_pos(child, child_size).visit(v, args...);
1779
66.4k
    }
1780
1781
    template <typename Visitor, typename... Args>
1782
    decltype(auto) first_sub_inner(Visitor v, Args&&... args)
1783
    {
1784
        assert(shift_ > BL);
1785
        auto child      = node_->inner()[0];
1786
        auto child_size = relaxed_->d.sizes[0];
1787
        return visit_maybe_relaxed_sub(
1788
            child, shift_ - B, child_size, v, args...);
1789
    }
1790
1791
    template <typename Visitor, typename... Args>
1792
    decltype(auto) nth_sub(count_t offset, Visitor v, Args&&... args)
1793
    {
1794
        auto child      = node_->inner()[offset];
1795
        auto child_size = size(offset);
1796
        auto is_leaf    = shift_ == BL;
1797
        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
1798
                       : visit_maybe_relaxed_sub(
1799
                             child, shift_ - B, child_size, v, args...);
1800
    }
1801
1802
    template <typename Visitor, typename... Args>
1803
    decltype(auto) nth_sub_leaf(count_t offset, Visitor v, Args&&... args)
1804
    {
1805
        assert(shift_ == BL);
1806
        auto child      = node_->inner()[offset];
1807
        auto child_size = size(offset);
1808
        return make_leaf_sub_pos(child, child_size).visit(v, args...);
1809
    }
1810
1811
    template <typename Visitor, typename... Args>
1812
    decltype(auto) visit(Visitor v, Args&&... args)
1813
11.7M
    {
1814
11.7M
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
11.7M
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor)
Line
Count
Source
1813
640k
    {
1814
640k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
640k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
Line
Count
Source
1813
49.2k
    {
1814
49.2k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
49.2k
    }
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
1813
28.1k
    {
1814
28.1k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
28.1k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&)
Line
Count
Source
1813
14.2k
    {
1814
14.2k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
14.2k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&)
Line
Count
Source
1813
4.09k
    {
1814
4.09k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
4.09k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&)
Line
Count
Source
1813
14.8k
    {
1814
14.8k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
14.8k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&)
Line
Count
Source
1813
94.3k
    {
1814
94.3k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
94.3k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
1.73k
    {
1814
1.73k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
1.73k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
1813
4.10M
    {
1814
4.10M
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
4.10M
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
1.35M
    {
1814
1.35M
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
1.35M
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
5.66k
    {
1814
5.66k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
5.66k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&)
Line
Count
Source
1813
41.8k
    {
1814
41.8k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
41.8k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
39.2k
    {
1814
39.2k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
39.2k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
3.01k
    {
1814
3.01k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
3.01k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
10.3k
    {
1814
10.3k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
10.3k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
170k
    {
1814
170k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
170k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
1.77k
    {
1814
1.77k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
1.77k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
556
    {
1814
556
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
556
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
912
    {
1814
912
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
912
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
168k
    {
1814
168k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
168k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
806
    {
1814
806
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
806
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
Line
Count
Source
1813
896k
    {
1814
896k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
896k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
Line
Count
Source
1813
18.9k
    {
1814
18.9k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
18.9k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&&)
Line
Count
Source
1813
5.51k
    {
1814
5.51k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
5.51k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&)
Line
Count
Source
1813
19.8k
    {
1814
19.8k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
19.8k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1813
53.0k
    {
1814
53.0k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
53.0k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1813
34.4k
    {
1814
34.4k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
34.4k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_right_visitor, unsigned int>(immer::detail::rbts::dec_right_visitor, unsigned int&&)
Line
Count
Source
1813
43.9k
    {
1814
43.9k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
43.9k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1813
10.8k
    {
1814
10.8k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
10.8k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1813
8.73k
    {
1814
8.73k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
8.73k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1813
3.98k
    {
1814
3.98k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
3.98k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1813
2.75M
    {
1814
2.75M
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
2.75M
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1813
13.5k
    {
1814
13.5k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
13.5k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&)
Line
Count
Source
1813
106k
    {
1814
106k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
106k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1813
66.8k
    {
1814
66.8k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
66.8k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
193k
    {
1814
193k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
193k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1813
121k
    {
1814
121k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
121k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1813
224k
    {
1814
224k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
224k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
228k
    {
1814
228k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
228k
    }
Unexecuted instantiation: decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
491
    {
1814
491
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
491
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
843
    {
1814
843
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
843
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1813
180k
    {
1814
180k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
180k
    }
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1813
3.52k
    {
1814
3.52k
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1815
3.52k
    }
1816
};
1817
1818
template <typename Pos>
1819
using is_relaxed = std::is_same<relaxed_pos<typename std::decay_t<Pos>::node_t>,
1820
                                std::decay_t<Pos>>;
1821
1822
template <typename Pos>
1823
constexpr auto is_relaxed_v = is_relaxed<Pos>::value;
1824
1825
template <typename NodeT>
1826
relaxed_pos<NodeT>
1827
make_relaxed_pos(NodeT* node, shift_t shift, typename NodeT::relaxed_t* relaxed)
1828
11.6M
{
1829
11.6M
    assert(node);
1830
11.6M
    assert(relaxed);
1831
11.6M
    assert(shift >= NodeT::bits_leaf);
1832
11.6M
    return {node, shift, relaxed};
1833
11.6M
}
1834
1835
template <typename NodeT, typename Visitor, typename... Args>
1836
decltype(auto) visit_maybe_relaxed_sub(
1837
    NodeT* node, shift_t shift, size_t size, Visitor v, Args&&... args)
1838
8.59M
{
1839
8.59M
    assert(node);
1840
8.59M
    auto relaxed = node->relaxed();
1841
8.59M
    if (relaxed) {
1842
7.40M
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
7.40M
        return make_relaxed_pos(node, shift, relaxed)
1844
7.40M
            .visit(v, std::forward<Args>(args)...);
1845
7.40M
    } else {
1846
1.18M
        return make_regular_sub_pos(node, shift, size)
1847
1.18M
            .visit(v, std::forward<Args>(args)...);
1848
1.18M
    }
1849
8.59M
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::dec_visitor>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::dec_visitor)
Line
Count
Source
1838
259k
{
1839
259k
    assert(node);
1840
259k
    auto relaxed = node->relaxed();
1841
259k
    if (relaxed) {
1842
210k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
210k
        return make_relaxed_pos(node, shift, relaxed)
1844
210k
            .visit(v, std::forward<Args>(args)...);
1845
210k
    } else {
1846
49.2k
        return make_regular_sub_pos(node, shift, size)
1847
49.2k
            .visit(v, std::forward<Args>(args)...);
1848
49.2k
    }
1849
259k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
Line
Count
Source
1838
44.2k
{
1839
44.2k
    assert(node);
1840
44.2k
    auto relaxed = node->relaxed();
1841
44.2k
    if (relaxed) {
1842
36.0k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
36.0k
        return make_relaxed_pos(node, shift, relaxed)
1844
36.0k
            .visit(v, std::forward<Args>(args)...);
1845
36.0k
    } else {
1846
8.13k
        return make_regular_sub_pos(node, shift, size)
1847
8.13k
            .visit(v, std::forward<Args>(args)...);
1848
8.13k
    }
1849
44.2k
}
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)
Line
Count
Source
1838
30.1k
{
1839
30.1k
    assert(node);
1840
30.1k
    auto relaxed = node->relaxed();
1841
30.1k
    if (relaxed) {
1842
28.1k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
28.1k
        return make_relaxed_pos(node, shift, relaxed)
1844
28.1k
            .visit(v, std::forward<Args>(args)...);
1845
28.1k
    } else {
1846
2.03k
        return make_regular_sub_pos(node, shift, size)
1847
2.03k
            .visit(v, std::forward<Args>(args)...);
1848
2.03k
    }
1849
30.1k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&)
Line
Count
Source
1838
19.3k
{
1839
19.3k
    assert(node);
1840
19.3k
    auto relaxed = node->relaxed();
1841
19.3k
    if (relaxed) {
1842
14.2k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
14.2k
        return make_relaxed_pos(node, shift, relaxed)
1844
14.2k
            .visit(v, std::forward<Args>(args)...);
1845
14.2k
    } else {
1846
5.12k
        return make_regular_sub_pos(node, shift, size)
1847
5.12k
            .visit(v, std::forward<Args>(args)...);
1848
5.12k
    }
1849
19.3k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&)
Line
Count
Source
1838
5.50k
{
1839
5.50k
    assert(node);
1840
5.50k
    auto relaxed = node->relaxed();
1841
5.50k
    if (relaxed) {
1842
4.09k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
4.09k
        return make_relaxed_pos(node, shift, relaxed)
1844
4.09k
            .visit(v, std::forward<Args>(args)...);
1845
4.09k
    } else {
1846
1.41k
        return make_regular_sub_pos(node, shift, size)
1847
1.41k
            .visit(v, std::forward<Args>(args)...);
1848
1.41k
    }
1849
5.50k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&)
Line
Count
Source
1838
17.6k
{
1839
17.6k
    assert(node);
1840
17.6k
    auto relaxed = node->relaxed();
1841
17.6k
    if (relaxed) {
1842
14.8k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
14.8k
        return make_relaxed_pos(node, shift, relaxed)
1844
14.8k
            .visit(v, std::forward<Args>(args)...);
1845
14.8k
    } else {
1846
2.78k
        return make_regular_sub_pos(node, shift, size)
1847
2.78k
            .visit(v, std::forward<Args>(args)...);
1848
2.78k
    }
1849
17.6k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&)
Line
Count
Source
1838
95.8k
{
1839
95.8k
    assert(node);
1840
95.8k
    auto relaxed = node->relaxed();
1841
95.8k
    if (relaxed) {
1842
94.3k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
94.3k
        return make_relaxed_pos(node, shift, relaxed)
1844
94.3k
            .visit(v, std::forward<Args>(args)...);
1845
94.3k
    } else {
1846
1.55k
        return make_regular_sub_pos(node, shift, size)
1847
1.55k
            .visit(v, std::forward<Args>(args)...);
1848
1.55k
    }
1849
95.8k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
2.89k
{
1839
2.89k
    assert(node);
1840
2.89k
    auto relaxed = node->relaxed();
1841
2.89k
    if (relaxed) {
1842
1.73k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
1.73k
        return make_relaxed_pos(node, shift, relaxed)
1844
1.73k
            .visit(v, std::forward<Args>(args)...);
1845
1.73k
    } else {
1846
1.15k
        return make_regular_sub_pos(node, shift, size)
1847
1.15k
            .visit(v, std::forward<Args>(args)...);
1848
1.15k
    }
1849
2.89k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
5.86k
{
1839
5.86k
    assert(node);
1840
5.86k
    auto relaxed = node->relaxed();
1841
5.86k
    if (relaxed) {
1842
5.66k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
5.66k
        return make_relaxed_pos(node, shift, relaxed)
1844
5.66k
            .visit(v, std::forward<Args>(args)...);
1845
5.66k
    } else {
1846
201
        return make_regular_sub_pos(node, shift, size)
1847
201
            .visit(v, std::forward<Args>(args)...);
1848
201
    }
1849
5.86k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&)
Line
Count
Source
1838
2.67M
{
1839
2.67M
    assert(node);
1840
2.67M
    auto relaxed = node->relaxed();
1841
2.67M
    if (relaxed) {
1842
2.52M
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
2.52M
        return make_relaxed_pos(node, shift, relaxed)
1844
2.52M
            .visit(v, std::forward<Args>(args)...);
1845
2.52M
    } else {
1846
145k
        return make_regular_sub_pos(node, shift, size)
1847
145k
            .visit(v, std::forward<Args>(args)...);
1848
145k
    }
1849
2.67M
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
963k
{
1839
963k
    assert(node);
1840
963k
    auto relaxed = node->relaxed();
1841
963k
    if (relaxed) {
1842
950k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
950k
        return make_relaxed_pos(node, shift, relaxed)
1844
950k
            .visit(v, std::forward<Args>(args)...);
1845
950k
    } else {
1846
12.5k
        return make_regular_sub_pos(node, shift, size)
1847
12.5k
            .visit(v, std::forward<Args>(args)...);
1848
12.5k
    }
1849
963k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&)
Line
Count
Source
1838
47.6k
{
1839
47.6k
    assert(node);
1840
47.6k
    auto relaxed = node->relaxed();
1841
47.6k
    if (relaxed) {
1842
41.8k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
41.8k
        return make_relaxed_pos(node, shift, relaxed)
1844
41.8k
            .visit(v, std::forward<Args>(args)...);
1845
41.8k
    } else {
1846
5.77k
        return make_regular_sub_pos(node, shift, size)
1847
5.77k
            .visit(v, std::forward<Args>(args)...);
1848
5.77k
    }
1849
47.6k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
41.8k
{
1839
41.8k
    assert(node);
1840
41.8k
    auto relaxed = node->relaxed();
1841
41.8k
    if (relaxed) {
1842
39.2k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
39.2k
        return make_relaxed_pos(node, shift, relaxed)
1844
39.2k
            .visit(v, std::forward<Args>(args)...);
1845
39.2k
    } else {
1846
2.60k
        return make_regular_sub_pos(node, shift, size)
1847
2.60k
            .visit(v, std::forward<Args>(args)...);
1848
2.60k
    }
1849
41.8k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
3.34k
{
1839
3.34k
    assert(node);
1840
3.34k
    auto relaxed = node->relaxed();
1841
3.34k
    if (relaxed) {
1842
3.01k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
3.01k
        return make_relaxed_pos(node, shift, relaxed)
1844
3.01k
            .visit(v, std::forward<Args>(args)...);
1845
3.01k
    } else {
1846
326
        return make_regular_sub_pos(node, shift, size)
1847
326
            .visit(v, std::forward<Args>(args)...);
1848
326
    }
1849
3.34k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
11.1k
{
1839
11.1k
    assert(node);
1840
11.1k
    auto relaxed = node->relaxed();
1841
11.1k
    if (relaxed) {
1842
10.3k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
10.3k
        return make_relaxed_pos(node, shift, relaxed)
1844
10.3k
            .visit(v, std::forward<Args>(args)...);
1845
10.3k
    } else {
1846
826
        return make_regular_sub_pos(node, shift, size)
1847
826
            .visit(v, std::forward<Args>(args)...);
1848
826
    }
1849
11.1k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
170k
{
1839
170k
    assert(node);
1840
170k
    auto relaxed = node->relaxed();
1841
170k
    if (relaxed) {
1842
170k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
170k
        return make_relaxed_pos(node, shift, relaxed)
1844
170k
            .visit(v, std::forward<Args>(args)...);
1845
170k
    } else {
1846
409
        return make_regular_sub_pos(node, shift, size)
1847
409
            .visit(v, std::forward<Args>(args)...);
1848
409
    }
1849
170k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
2.11k
{
1839
2.11k
    assert(node);
1840
2.11k
    auto relaxed = node->relaxed();
1841
2.11k
    if (relaxed) {
1842
1.77k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
1.77k
        return make_relaxed_pos(node, shift, relaxed)
1844
1.77k
            .visit(v, std::forward<Args>(args)...);
1845
1.77k
    } else {
1846
342
        return make_regular_sub_pos(node, shift, size)
1847
342
            .visit(v, std::forward<Args>(args)...);
1848
342
    }
1849
2.11k
}
Unexecuted instantiation: decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
782
{
1839
782
    assert(node);
1840
782
    auto relaxed = node->relaxed();
1841
782
    if (relaxed) {
1842
556
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
556
        return make_relaxed_pos(node, shift, relaxed)
1844
556
            .visit(v, std::forward<Args>(args)...);
1845
556
    } else {
1846
226
        return make_regular_sub_pos(node, shift, size)
1847
226
            .visit(v, std::forward<Args>(args)...);
1848
226
    }
1849
782
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
1.35k
{
1839
1.35k
    assert(node);
1840
1.35k
    auto relaxed = node->relaxed();
1841
1.35k
    if (relaxed) {
1842
912
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
912
        return make_relaxed_pos(node, shift, relaxed)
1844
912
            .visit(v, std::forward<Args>(args)...);
1845
912
    } else {
1846
441
        return make_regular_sub_pos(node, shift, size)
1847
441
            .visit(v, std::forward<Args>(args)...);
1848
441
    }
1849
1.35k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
171k
{
1839
171k
    assert(node);
1840
171k
    auto relaxed = node->relaxed();
1841
171k
    if (relaxed) {
1842
168k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
168k
        return make_relaxed_pos(node, shift, relaxed)
1844
168k
            .visit(v, std::forward<Args>(args)...);
1845
168k
    } else {
1846
3.21k
        return make_regular_sub_pos(node, shift, size)
1847
3.21k
            .visit(v, std::forward<Args>(args)...);
1848
3.21k
    }
1849
171k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
5.77k
{
1839
5.77k
    assert(node);
1840
5.77k
    auto relaxed = node->relaxed();
1841
5.77k
    if (relaxed) {
1842
806
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
806
        return make_relaxed_pos(node, shift, relaxed)
1844
806
            .visit(v, std::forward<Args>(args)...);
1845
4.96k
    } else {
1846
4.96k
        return make_regular_sub_pos(node, shift, size)
1847
4.96k
            .visit(v, std::forward<Args>(args)...);
1848
4.96k
    }
1849
5.77k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
Line
Count
Source
1838
884k
{
1839
884k
    assert(node);
1840
884k
    auto relaxed = node->relaxed();
1841
884k
    if (relaxed) {
1842
204k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
204k
        return make_relaxed_pos(node, shift, relaxed)
1844
204k
            .visit(v, std::forward<Args>(args)...);
1845
679k
    } else {
1846
679k
        return make_regular_sub_pos(node, shift, size)
1847
679k
            .visit(v, std::forward<Args>(args)...);
1848
679k
    }
1849
884k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&)
Line
Count
Source
1838
21.6k
{
1839
21.6k
    assert(node);
1840
21.6k
    auto relaxed = node->relaxed();
1841
21.6k
    if (relaxed) {
1842
18.9k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
18.9k
        return make_relaxed_pos(node, shift, relaxed)
1844
18.9k
            .visit(v, std::forward<Args>(args)...);
1845
18.9k
    } else {
1846
2.76k
        return make_regular_sub_pos(node, shift, size)
1847
2.76k
            .visit(v, std::forward<Args>(args)...);
1848
2.76k
    }
1849
21.6k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&&)
Line
Count
Source
1838
10.3k
{
1839
10.3k
    assert(node);
1840
10.3k
    auto relaxed = node->relaxed();
1841
10.3k
    if (relaxed) {
1842
5.51k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
5.51k
        return make_relaxed_pos(node, shift, relaxed)
1844
5.51k
            .visit(v, std::forward<Args>(args)...);
1845
5.51k
    } else {
1846
4.81k
        return make_regular_sub_pos(node, shift, size)
1847
4.81k
            .visit(v, std::forward<Args>(args)...);
1848
4.81k
    }
1849
10.3k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&)
Line
Count
Source
1838
21.8k
{
1839
21.8k
    assert(node);
1840
21.8k
    auto relaxed = node->relaxed();
1841
21.8k
    if (relaxed) {
1842
19.8k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
19.8k
        return make_relaxed_pos(node, shift, relaxed)
1844
19.8k
            .visit(v, std::forward<Args>(args)...);
1845
19.8k
    } else {
1846
1.97k
        return make_regular_sub_pos(node, shift, size)
1847
1.97k
            .visit(v, std::forward<Args>(args)...);
1848
1.97k
    }
1849
21.8k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1838
67.8k
{
1839
67.8k
    assert(node);
1840
67.8k
    auto relaxed = node->relaxed();
1841
67.8k
    if (relaxed) {
1842
53.0k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
53.0k
        return make_relaxed_pos(node, shift, relaxed)
1844
53.0k
            .visit(v, std::forward<Args>(args)...);
1845
53.0k
    } else {
1846
14.8k
        return make_regular_sub_pos(node, shift, size)
1847
14.8k
            .visit(v, std::forward<Args>(args)...);
1848
14.8k
    }
1849
67.8k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1838
35.5k
{
1839
35.5k
    assert(node);
1840
35.5k
    auto relaxed = node->relaxed();
1841
35.5k
    if (relaxed) {
1842
34.4k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
34.4k
        return make_relaxed_pos(node, shift, relaxed)
1844
34.4k
            .visit(v, std::forward<Args>(args)...);
1845
34.4k
    } else {
1846
1.06k
        return make_regular_sub_pos(node, shift, size)
1847
1.06k
            .visit(v, std::forward<Args>(args)...);
1848
1.06k
    }
1849
35.5k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1838
13.3k
{
1839
13.3k
    assert(node);
1840
13.3k
    auto relaxed = node->relaxed();
1841
13.3k
    if (relaxed) {
1842
10.8k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
10.8k
        return make_relaxed_pos(node, shift, relaxed)
1844
10.8k
            .visit(v, std::forward<Args>(args)...);
1845
10.8k
    } else {
1846
2.58k
        return make_regular_sub_pos(node, shift, size)
1847
2.58k
            .visit(v, std::forward<Args>(args)...);
1848
2.58k
    }
1849
13.3k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1838
10.6k
{
1839
10.6k
    assert(node);
1840
10.6k
    auto relaxed = node->relaxed();
1841
10.6k
    if (relaxed) {
1842
8.73k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
8.73k
        return make_relaxed_pos(node, shift, relaxed)
1844
8.73k
            .visit(v, std::forward<Args>(args)...);
1845
8.73k
    } else {
1846
1.88k
        return make_regular_sub_pos(node, shift, size)
1847
1.88k
            .visit(v, std::forward<Args>(args)...);
1848
1.88k
    }
1849
10.6k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1838
7.23k
{
1839
7.23k
    assert(node);
1840
7.23k
    auto relaxed = node->relaxed();
1841
7.23k
    if (relaxed) {
1842
3.98k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
3.98k
        return make_relaxed_pos(node, shift, relaxed)
1844
3.98k
            .visit(v, std::forward<Args>(args)...);
1845
3.98k
    } else {
1846
3.25k
        return make_regular_sub_pos(node, shift, size)
1847
3.25k
            .visit(v, std::forward<Args>(args)...);
1848
3.25k
    }
1849
7.23k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1838
13.8k
{
1839
13.8k
    assert(node);
1840
13.8k
    auto relaxed = node->relaxed();
1841
13.8k
    if (relaxed) {
1842
13.5k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
13.5k
        return make_relaxed_pos(node, shift, relaxed)
1844
13.5k
            .visit(v, std::forward<Args>(args)...);
1845
13.5k
    } else {
1846
269
        return make_regular_sub_pos(node, shift, size)
1847
269
            .visit(v, std::forward<Args>(args)...);
1848
269
    }
1849
13.8k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1838
1.70M
{
1839
1.70M
    assert(node);
1840
1.70M
    auto relaxed = node->relaxed();
1841
1.70M
    if (relaxed) {
1842
1.57M
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
1.57M
        return make_relaxed_pos(node, shift, relaxed)
1844
1.57M
            .visit(v, std::forward<Args>(args)...);
1845
1.57M
    } else {
1846
133k
        return make_regular_sub_pos(node, shift, size)
1847
133k
            .visit(v, std::forward<Args>(args)...);
1848
133k
    }
1849
1.70M
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&)
Line
Count
Source
1838
113k
{
1839
113k
    assert(node);
1840
113k
    auto relaxed = node->relaxed();
1841
113k
    if (relaxed) {
1842
106k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
106k
        return make_relaxed_pos(node, shift, relaxed)
1844
106k
            .visit(v, std::forward<Args>(args)...);
1845
106k
    } else {
1846
6.42k
        return make_regular_sub_pos(node, shift, size)
1847
6.42k
            .visit(v, std::forward<Args>(args)...);
1848
6.42k
    }
1849
113k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1838
106k
{
1839
106k
    assert(node);
1840
106k
    auto relaxed = node->relaxed();
1841
106k
    if (relaxed) {
1842
66.8k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
66.8k
        return make_relaxed_pos(node, shift, relaxed)
1844
66.8k
            .visit(v, std::forward<Args>(args)...);
1845
66.8k
    } else {
1846
39.7k
        return make_regular_sub_pos(node, shift, size)
1847
39.7k
            .visit(v, std::forward<Args>(args)...);
1848
39.7k
    }
1849
106k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
194k
{
1839
194k
    assert(node);
1840
194k
    auto relaxed = node->relaxed();
1841
194k
    if (relaxed) {
1842
193k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
193k
        return make_relaxed_pos(node, shift, relaxed)
1844
193k
            .visit(v, std::forward<Args>(args)...);
1845
193k
    } else {
1846
1.71k
        return make_regular_sub_pos(node, shift, size)
1847
1.71k
            .visit(v, std::forward<Args>(args)...);
1848
1.71k
    }
1849
194k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1838
124k
{
1839
124k
    assert(node);
1840
124k
    auto relaxed = node->relaxed();
1841
124k
    if (relaxed) {
1842
121k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
121k
        return make_relaxed_pos(node, shift, relaxed)
1844
121k
            .visit(v, std::forward<Args>(args)...);
1845
121k
    } else {
1846
2.70k
        return make_regular_sub_pos(node, shift, size)
1847
2.70k
            .visit(v, std::forward<Args>(args)...);
1848
2.70k
    }
1849
124k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1838
225k
{
1839
225k
    assert(node);
1840
225k
    auto relaxed = node->relaxed();
1841
225k
    if (relaxed) {
1842
224k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
224k
        return make_relaxed_pos(node, shift, relaxed)
1844
224k
            .visit(v, std::forward<Args>(args)...);
1845
224k
    } else {
1846
1.24k
        return make_regular_sub_pos(node, shift, size)
1847
1.24k
            .visit(v, std::forward<Args>(args)...);
1848
1.24k
    }
1849
225k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
229k
{
1839
229k
    assert(node);
1840
229k
    auto relaxed = node->relaxed();
1841
229k
    if (relaxed) {
1842
228k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
228k
        return make_relaxed_pos(node, shift, relaxed)
1844
228k
            .visit(v, std::forward<Args>(args)...);
1845
228k
    } else {
1846
611
        return make_regular_sub_pos(node, shift, size)
1847
611
            .visit(v, std::forward<Args>(args)...);
1848
611
    }
1849
229k
}
Unexecuted instantiation: decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
745
{
1839
745
    assert(node);
1840
745
    auto relaxed = node->relaxed();
1841
745
    if (relaxed) {
1842
491
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
491
        return make_relaxed_pos(node, shift, relaxed)
1844
491
            .visit(v, std::forward<Args>(args)...);
1845
491
    } else {
1846
254
        return make_regular_sub_pos(node, shift, size)
1847
254
            .visit(v, std::forward<Args>(args)...);
1848
254
    }
1849
745
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
6.51k
{
1839
6.51k
    assert(node);
1840
6.51k
    auto relaxed = node->relaxed();
1841
6.51k
    if (relaxed) {
1842
843
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
843
        return make_relaxed_pos(node, shift, relaxed)
1844
843
            .visit(v, std::forward<Args>(args)...);
1845
5.67k
    } else {
1846
5.67k
        return make_regular_sub_pos(node, shift, size)
1847
5.67k
            .visit(v, std::forward<Args>(args)...);
1848
5.67k
    }
1849
6.51k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&)
Line
Count
Source
1838
213k
{
1839
213k
    assert(node);
1840
213k
    auto relaxed = node->relaxed();
1841
213k
    if (relaxed) {
1842
180k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
180k
        return make_relaxed_pos(node, shift, relaxed)
1844
180k
            .visit(v, std::forward<Args>(args)...);
1845
180k
    } else {
1846
32.2k
        return make_regular_sub_pos(node, shift, size)
1847
32.2k
            .visit(v, std::forward<Args>(args)...);
1848
32.2k
    }
1849
213k
}
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&)
Line
Count
Source
1838
6.42k
{
1839
6.42k
    assert(node);
1840
6.42k
    auto relaxed = node->relaxed();
1841
6.42k
    if (relaxed) {
1842
3.52k
        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
1843
3.52k
        return make_relaxed_pos(node, shift, relaxed)
1844
3.52k
            .visit(v, std::forward<Args>(args)...);
1845
3.52k
    } else {
1846
2.89k
        return make_regular_sub_pos(node, shift, size)
1847
2.89k
            .visit(v, std::forward<Args>(args)...);
1848
2.89k
    }
1849
6.42k
}
1850
1851
template <typename NodeT,
1852
          shift_t Shift,
1853
          bits_t B  = NodeT::bits,
1854
          bits_t BL = NodeT::bits_leaf>
1855
struct relaxed_descent_pos
1856
{
1857
    static_assert(Shift > 0, "not leaf...");
1858
1859
    using node_t    = NodeT;
1860
    using relaxed_t = typename NodeT::relaxed_t;
1861
    node_t* node_;
1862
    relaxed_t* relaxed_;
1863
1864
    count_t count() const { return relaxed_->d.count; }
1865
    node_t* node() const { return node_; }
1866
    shift_t shift() const { return Shift; }
1867
    size_t size() const { return relaxed_->d.sizes[relaxed_->d.count - 1]; }
1868
1869
    count_t index(size_t idx) const
1870
    {
1871
        // make gcc happy
1872
#if !defined(_MSC_VER)
1873
#pragma GCC diagnostic push
1874
#pragma GCC diagnostic ignored "-Wshift-count-overflow"
1875
#endif
1876
        auto offset = idx >> Shift;
1877
#if !defined(_MSC_VER)
1878
#pragma GCC diagnostic pop
1879
#endif
1880
        while (relaxed_->d.sizes[offset] <= idx)
1881
            ++offset;
1882
        return offset;
1883
    }
1884
1885
    template <typename Visitor>
1886
    decltype(auto) descend(Visitor v, size_t idx)
1887
    {
1888
        auto offset    = index(idx);
1889
        auto child     = node_->inner()[offset];
1890
        auto left_size = offset ? relaxed_->d.sizes[offset - 1] : 0;
1891
        auto next_idx  = idx - left_size;
1892
        auto r         = child->relaxed();
1893
        return r ? relaxed_descent_pos<NodeT, Shift - B>{child, r}.visit(
1894
                       v, next_idx)
1895
                 : regular_descent_pos<NodeT, Shift - B>{child}.visit(v,
1896
                                                                      next_idx);
1897
    }
1898
1899
    template <typename Visitor, typename... Args>
1900
    decltype(auto) visit(Visitor v, Args&&... args)
1901
    {
1902
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1903
    }
1904
};
1905
1906
template <typename NodeT, bits_t B, bits_t BL>
1907
struct relaxed_descent_pos<NodeT, BL, B, BL>
1908
{
1909
    using node_t    = NodeT;
1910
    using relaxed_t = typename NodeT::relaxed_t;
1911
    node_t* node_;
1912
    relaxed_t* relaxed_;
1913
1914
    count_t count() const { return relaxed_->d.count; }
1915
    node_t* node() const { return node_; }
1916
    shift_t shift() const { return BL; }
1917
    size_t size() const { return relaxed_->d.sizes[relaxed_->d.count - 1]; }
1918
1919
    count_t index(size_t idx) const
1920
    {
1921
        auto offset = (idx >> BL) & mask<B>;
1922
        while (relaxed_->d.sizes[offset] <= idx)
1923
            ++offset;
1924
        return offset;
1925
    }
1926
1927
    template <typename Visitor>
1928
    decltype(auto) descend(Visitor v, size_t idx)
1929
    {
1930
        auto offset    = index(idx);
1931
        auto child     = node_->inner()[offset];
1932
        auto left_size = offset ? relaxed_->d.sizes[offset - 1] : 0;
1933
        auto next_idx  = idx - left_size;
1934
        return leaf_descent_pos<NodeT>{child}.visit(v, next_idx);
1935
    }
1936
1937
    template <typename Visitor, typename... Args>
1938
    decltype(auto) visit(Visitor v, Args&&... args)
1939
    {
1940
        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
1941
    }
1942
};
1943
1944
template <typename NodeT, typename Visitor, typename... Args>
1945
decltype(auto)
1946
visit_maybe_relaxed_descent(NodeT* node, shift_t shift, Visitor v, size_t idx)
1947
{
1948
    constexpr auto B  = NodeT::bits;
1949
    constexpr auto BL = NodeT::bits_leaf;
1950
    assert(node);
1951
    assert(shift >= BL);
1952
    auto r = node->relaxed();
1953
    if (r) {
1954
        switch (shift) {
1955
        case BL + B * 0:
1956
            return relaxed_descent_pos<NodeT, BL + B * 0>{node, r}.visit(v,
1957
                                                                         idx);
1958
        case BL + B * 1:
1959
            return relaxed_descent_pos<NodeT, BL + B * 1>{node, r}.visit(v,
1960
                                                                         idx);
1961
        case BL + B * 2:
1962
            return relaxed_descent_pos<NodeT, BL + B * 2>{node, r}.visit(v,
1963
                                                                         idx);
1964
        case BL + B * 3:
1965
            return relaxed_descent_pos<NodeT, BL + B * 3>{node, r}.visit(v,
1966
                                                                         idx);
1967
        case BL + B * 4:
1968
            return relaxed_descent_pos<NodeT, BL + B * 4>{node, r}.visit(v,
1969
                                                                         idx);
1970
        case BL + B * 5:
1971
            return relaxed_descent_pos<NodeT, BL + B * 5>{node, r}.visit(v,
1972
                                                                         idx);
1973
#if IMMER_DESCENT_DEEP
1974
        default:
1975
            for (auto level = shift; level != endshift<B, BL>; level -= B) {
1976
                auto r = node->relaxed();
1977
                if (r) {
1978
                    auto node_idx = (idx >> level) & mask<B>;
1979
                    while (r->d.sizes[node_idx] <= idx)
1980
                        ++node_idx;
1981
                    if (node_idx)
1982
                        idx -= r->d.sizes[node_idx - 1];
1983
                    node = node->inner()[node_idx];
1984
                } else {
1985
                    do {
1986
                        node = node->inner()[(idx >> level) & mask<B>];
1987
                    } while ((level -= B) != endshift<B, BL>);
1988
                    return make_leaf_descent_pos(node).visit(v, idx);
1989
                }
1990
            }
1991
            return make_leaf_descent_pos(node).visit(v, idx);
1992
#endif // IMMER_DESCENT_DEEP
1993
        }
1994
        IMMER_UNREACHABLE;
1995
    } else {
1996
        return visit_regular_descent(node, shift, v, idx);
1997
    }
1998
}
1999
2000
} // namespace rbts
2001
} // namespace detail
2002
} // namespace immer