/src/immer/immer/detail/iterator_facade.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 <cstddef> |
12 | | #include <iterator> |
13 | | #include <type_traits> |
14 | | |
15 | | namespace immer { |
16 | | namespace detail { |
17 | | |
18 | | struct iterator_core_access |
19 | | { |
20 | | template <typename T> |
21 | | static decltype(auto) dereference(T&& x) |
22 | 28.5M | { |
23 | 28.5M | return x.dereference(); |
24 | 28.5M | } decltype(auto) immer::detail::iterator_core_access::dereference<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> const&>(immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u> const&) Line | Count | Source | 22 | 11.6M | { | 23 | 11.6M | return x.dereference(); | 24 | 11.6M | } |
decltype(auto) immer::detail::iterator_core_access::dereference<immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&>(immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 22 | 327k | { | 23 | 327k | return x.dereference(); | 24 | 327k | } |
decltype(auto) immer::detail::iterator_core_access::dereference<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&>(immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 22 | 299k | { | 23 | 299k | return x.dereference(); | 24 | 299k | } |
decltype(auto) immer::detail::iterator_core_access::dereference<immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&>(immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&) Line | Count | Source | 22 | 291k | { | 23 | 291k | return x.dereference(); | 24 | 291k | } |
decltype(auto) immer::detail::iterator_core_access::dereference<immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&>(immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 22 | 213k | { | 23 | 213k | return x.dereference(); | 24 | 213k | } |
decltype(auto) immer::detail::iterator_core_access::dereference<immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&>(immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 22 | 390k | { | 23 | 390k | return x.dereference(); | 24 | 390k | } |
decltype(auto) immer::detail::iterator_core_access::dereference<immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&>(immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 22 | 99.0k | { | 23 | 99.0k | return x.dereference(); | 24 | 99.0k | } |
decltype(auto) immer::detail::iterator_core_access::dereference<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&>(immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 22 | 44.4k | { | 23 | 44.4k | return x.dereference(); | 24 | 44.4k | } |
decltype(auto) immer::detail::iterator_core_access::dereference<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> const&>(immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u> const&) Line | Count | Source | 22 | 5.51M | { | 23 | 5.51M | return x.dereference(); | 24 | 5.51M | } |
decltype(auto) immer::detail::iterator_core_access::dereference<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const&>(immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const&) Line | Count | Source | 22 | 532k | { | 23 | 532k | return x.dereference(); | 24 | 532k | } |
decltype(auto) immer::detail::iterator_core_access::dereference<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> const&>(immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u> const&) Line | Count | Source | 22 | 9.00M | { | 23 | 9.00M | return x.dereference(); | 24 | 9.00M | } |
decltype(auto) immer::detail::iterator_core_access::dereference<immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&>(immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&) Line | Count | Source | 22 | 173k | { | 23 | 173k | return x.dereference(); | 24 | 173k | } |
|
25 | | |
26 | | template <typename T> |
27 | | static decltype(auto) increment(T&& x) |
28 | 24.5M | { |
29 | 24.5M | return x.increment(); |
30 | 24.5M | } decltype(auto) immer::detail::iterator_core_access::increment<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>&>(immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>&) Line | Count | Source | 28 | 10.1M | { | 29 | 10.1M | return x.increment(); | 30 | 10.1M | } |
decltype(auto) immer::detail::iterator_core_access::increment<immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>&>(immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>&) Line | Count | Source | 28 | 327k | { | 29 | 327k | return x.increment(); | 30 | 327k | } |
decltype(auto) immer::detail::iterator_core_access::increment<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>&>(immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>&) Line | Count | Source | 28 | 299k | { | 29 | 299k | return x.increment(); | 30 | 299k | } |
decltype(auto) immer::detail::iterator_core_access::increment<immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>&>(immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>&) Line | Count | Source | 28 | 291k | { | 29 | 291k | return x.increment(); | 30 | 291k | } |
decltype(auto) immer::detail::iterator_core_access::increment<immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>&>(immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>&) Line | Count | Source | 28 | 213k | { | 29 | 213k | return x.increment(); | 30 | 213k | } |
decltype(auto) immer::detail::iterator_core_access::increment<immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>&>(immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>&) Line | Count | Source | 28 | 390k | { | 29 | 390k | return x.increment(); | 30 | 390k | } |
decltype(auto) immer::detail::iterator_core_access::increment<immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>&>(immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>&) Line | Count | Source | 28 | 99.0k | { | 29 | 99.0k | return x.increment(); | 30 | 99.0k | } |
decltype(auto) immer::detail::iterator_core_access::increment<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>&>(immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>&) Line | Count | Source | 28 | 44.4k | { | 29 | 44.4k | return x.increment(); | 30 | 44.4k | } |
decltype(auto) immer::detail::iterator_core_access::increment<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>&>(immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>&) Line | Count | Source | 28 | 4.17M | { | 29 | 4.17M | return x.increment(); | 30 | 4.17M | } |
decltype(auto) immer::detail::iterator_core_access::increment<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>&>(immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>&) Line | Count | Source | 28 | 532k | { | 29 | 532k | return x.increment(); | 30 | 532k | } |
decltype(auto) immer::detail::iterator_core_access::increment<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>&>(immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>&) Line | Count | Source | 28 | 7.87M | { | 29 | 7.87M | return x.increment(); | 30 | 7.87M | } |
decltype(auto) immer::detail::iterator_core_access::increment<immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>&>(immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>&) Line | Count | Source | 28 | 173k | { | 29 | 173k | return x.increment(); | 30 | 173k | } |
|
31 | | |
32 | | template <typename T> |
33 | | static decltype(auto) decrement(T&& x) |
34 | | { |
35 | | return x.decrement(); |
36 | | } |
37 | | |
38 | | template <typename T1, typename T2> |
39 | | static decltype(auto) equal(T1&& x1, T2&& x2) |
40 | 2.44M | { |
41 | 2.44M | return x1.equal(x2); |
42 | 2.44M | } decltype(auto) immer::detail::iterator_core_access::equal<immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&>(immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 40 | 335k | { | 41 | 335k | return x1.equal(x2); | 42 | 335k | } |
decltype(auto) immer::detail::iterator_core_access::equal<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&>(immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 40 | 308k | { | 41 | 308k | return x1.equal(x2); | 42 | 308k | } |
decltype(auto) immer::detail::iterator_core_access::equal<immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&, immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&>(immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&, immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&) Line | Count | Source | 40 | 301k | { | 41 | 301k | return x1.equal(x2); | 42 | 301k | } |
decltype(auto) immer::detail::iterator_core_access::equal<immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&>(immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 40 | 221k | { | 41 | 221k | return x1.equal(x2); | 42 | 221k | } |
decltype(auto) immer::detail::iterator_core_access::equal<immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&>(immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 40 | 399k | { | 41 | 399k | return x1.equal(x2); | 42 | 399k | } |
decltype(auto) immer::detail::iterator_core_access::equal<immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&>(immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 40 | 103k | { | 41 | 103k | return x1.equal(x2); | 42 | 103k | } |
decltype(auto) immer::detail::iterator_core_access::equal<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&>(immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 40 | 51.1k | { | 41 | 51.1k | return x1.equal(x2); | 42 | 51.1k | } |
decltype(auto) immer::detail::iterator_core_access::equal<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const&>(immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const&) Line | Count | Source | 40 | 540k | { | 41 | 540k | return x1.equal(x2); | 42 | 540k | } |
decltype(auto) immer::detail::iterator_core_access::equal<immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&>(immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&) Line | Count | Source | 40 | 185k | { | 41 | 185k | return x1.equal(x2); | 42 | 185k | } |
|
43 | | |
44 | | template <typename T, typename D> |
45 | | static decltype(auto) advance(T&& x, D d) |
46 | 612k | { |
47 | 612k | return x.advance(d); |
48 | 612k | } decltype(auto) immer::detail::iterator_core_access::advance<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>&, long>(immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>&, long) Line | Count | Source | 46 | 228k | { | 47 | 228k | return x.advance(d); | 48 | 228k | } |
decltype(auto) immer::detail::iterator_core_access::advance<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>&, long>(immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>&, long) Line | Count | Source | 46 | 207k | { | 47 | 207k | return x.advance(d); | 48 | 207k | } |
decltype(auto) immer::detail::iterator_core_access::advance<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>&, long>(immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>&, long) Line | Count | Source | 46 | 177k | { | 47 | 177k | return x.advance(d); | 48 | 177k | } |
|
49 | | |
50 | | template <typename T1, typename T2> |
51 | | static decltype(auto) distance_to(T1&& x1, T2&& x2) |
52 | | { |
53 | | return x1.distance_to(x2); |
54 | | } |
55 | | }; |
56 | | |
57 | | /*! |
58 | | * Minimalistic reimplementation of boost::iterator_facade |
59 | | */ |
60 | | template <typename DerivedT, |
61 | | typename IteratorCategoryT, |
62 | | typename T, |
63 | | typename ReferenceT = T&, |
64 | | typename DifferenceTypeT = std::ptrdiff_t, |
65 | | typename PointerT = T*> |
66 | | class iterator_facade |
67 | | { |
68 | | public: |
69 | | using iterator_category = IteratorCategoryT; |
70 | | using value_type = T; |
71 | | using difference_type = DifferenceTypeT; |
72 | | using pointer = PointerT; |
73 | | using reference = ReferenceT; |
74 | | |
75 | | protected: |
76 | | using access_t = iterator_core_access; |
77 | | |
78 | | constexpr static auto is_random_access = |
79 | | std::is_base_of<std::random_access_iterator_tag, |
80 | | IteratorCategoryT>::value; |
81 | | constexpr static auto is_bidirectional = |
82 | | std::is_base_of<std::bidirectional_iterator_tag, |
83 | | IteratorCategoryT>::value; |
84 | | |
85 | | const DerivedT& derived() const |
86 | 28.7M | { |
87 | 28.7M | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, |
88 | 28.7M | "must pass a derived thing"); |
89 | 28.7M | return *static_cast<const DerivedT*>(this); |
90 | 28.7M | } immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::derived() const Line | Count | Source | 86 | 11.7M | { | 87 | 11.7M | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 88 | 11.7M | "must pass a derived thing"); | 89 | 11.7M | return *static_cast<const DerivedT*>(this); | 90 | 11.7M | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*>::derived() const Line | Count | Source | 86 | 327k | { | 87 | 327k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 88 | 327k | "must pass a derived thing"); | 89 | 327k | return *static_cast<const DerivedT*>(this); | 90 | 327k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<unsigned long, int>, std::__1::pair<unsigned long, int> const&, long, std::__1::pair<unsigned long, int> const*>::derived() const Line | Count | Source | 86 | 299k | { | 87 | 299k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 88 | 299k | "must pass a derived thing"); | 89 | 299k | return *static_cast<const DerivedT*>(this); | 90 | 299k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>, std::__1::forward_iterator_tag, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*>::derived() const Line | Count | Source | 86 | 291k | { | 87 | 291k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 88 | 291k | "must pass a derived thing"); | 89 | 291k | return *static_cast<const DerivedT*>(this); | 90 | 291k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const&, long, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const*>::derived() const Line | Count | Source | 86 | 213k | { | 87 | 213k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 88 | 213k | "must pass a derived thing"); | 89 | 213k | return *static_cast<const DerivedT*>(this); | 90 | 213k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, unsigned long, unsigned long const&, long, unsigned long const*>::derived() const Line | Count | Source | 86 | 390k | { | 87 | 390k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 88 | 390k | "must pass a derived thing"); | 89 | 390k | return *static_cast<const DerivedT*>(this); | 90 | 390k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, unsigned long, unsigned long const&, long, unsigned long const*>::derived() const Line | Count | Source | 86 | 99.0k | { | 87 | 99.0k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 88 | 99.0k | "must pass a derived thing"); | 89 | 99.0k | return *static_cast<const DerivedT*>(this); | 90 | 99.0k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<unsigned long, int>, std::__1::pair<unsigned long, int> const&, long, std::__1::pair<unsigned long, int> const*>::derived() const Line | Count | Source | 86 | 44.4k | { | 87 | 44.4k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 88 | 44.4k | "must pass a derived thing"); | 89 | 44.4k | return *static_cast<const DerivedT*>(this); | 90 | 44.4k | } |
immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::derived() const Line | Count | Source | 86 | 5.55M | { | 87 | 5.55M | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 88 | 5.55M | "must pass a derived thing"); | 89 | 5.55M | return *static_cast<const DerivedT*>(this); | 90 | 5.55M | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<unsigned long, int>, std::__1::pair<unsigned long, int> const&, long, std::__1::pair<unsigned long, int> const*>::derived() const Line | Count | Source | 86 | 532k | { | 87 | 532k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 88 | 532k | "must pass a derived thing"); | 89 | 532k | return *static_cast<const DerivedT*>(this); | 90 | 532k | } |
immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::derived() const Line | Count | Source | 86 | 9.09M | { | 87 | 9.09M | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 88 | 9.09M | "must pass a derived thing"); | 89 | 9.09M | return *static_cast<const DerivedT*>(this); | 90 | 9.09M | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>, std::__1::forward_iterator_tag, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const&, long, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const*>::derived() const Line | Count | Source | 86 | 173k | { | 87 | 173k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 88 | 173k | "must pass a derived thing"); | 89 | 173k | return *static_cast<const DerivedT*>(this); | 90 | 173k | } |
|
91 | | DerivedT& derived() |
92 | 50.3M | { |
93 | 50.3M | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, |
94 | 50.3M | "must pass a derived thing"); |
95 | 50.3M | return *static_cast<DerivedT*>(this); |
96 | 50.3M | } immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::derived() Line | Count | Source | 92 | 20.7M | { | 93 | 20.7M | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 94 | 20.7M | "must pass a derived thing"); | 95 | 20.7M | return *static_cast<DerivedT*>(this); | 96 | 20.7M | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*>::derived() Line | Count | Source | 92 | 655k | { | 93 | 655k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 94 | 655k | "must pass a derived thing"); | 95 | 655k | return *static_cast<DerivedT*>(this); | 96 | 655k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<unsigned long, int>, std::__1::pair<unsigned long, int> const&, long, std::__1::pair<unsigned long, int> const*>::derived() Line | Count | Source | 92 | 599k | { | 93 | 599k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 94 | 599k | "must pass a derived thing"); | 95 | 599k | return *static_cast<DerivedT*>(this); | 96 | 599k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>, std::__1::forward_iterator_tag, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*>::derived() Line | Count | Source | 92 | 582k | { | 93 | 582k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 94 | 582k | "must pass a derived thing"); | 95 | 582k | return *static_cast<DerivedT*>(this); | 96 | 582k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const&, long, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const*>::derived() Line | Count | Source | 92 | 426k | { | 93 | 426k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 94 | 426k | "must pass a derived thing"); | 95 | 426k | return *static_cast<DerivedT*>(this); | 96 | 426k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, unsigned long, unsigned long const&, long, unsigned long const*>::derived() Line | Count | Source | 92 | 780k | { | 93 | 780k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 94 | 780k | "must pass a derived thing"); | 95 | 780k | return *static_cast<DerivedT*>(this); | 96 | 780k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, unsigned long, unsigned long const&, long, unsigned long const*>::derived() Line | Count | Source | 92 | 198k | { | 93 | 198k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 94 | 198k | "must pass a derived thing"); | 95 | 198k | return *static_cast<DerivedT*>(this); | 96 | 198k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<unsigned long, int>, std::__1::pair<unsigned long, int> const&, long, std::__1::pair<unsigned long, int> const*>::derived() Line | Count | Source | 92 | 88.9k | { | 93 | 88.9k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 94 | 88.9k | "must pass a derived thing"); | 95 | 88.9k | return *static_cast<DerivedT*>(this); | 96 | 88.9k | } |
immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::derived() Line | Count | Source | 92 | 8.75M | { | 93 | 8.75M | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 94 | 8.75M | "must pass a derived thing"); | 95 | 8.75M | return *static_cast<DerivedT*>(this); | 96 | 8.75M | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<unsigned long, int>, std::__1::pair<unsigned long, int> const&, long, std::__1::pair<unsigned long, int> const*>::derived() Line | Count | Source | 92 | 1.06M | { | 93 | 1.06M | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 94 | 1.06M | "must pass a derived thing"); | 95 | 1.06M | return *static_cast<DerivedT*>(this); | 96 | 1.06M | } |
immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::derived() Line | Count | Source | 92 | 16.1M | { | 93 | 16.1M | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 94 | 16.1M | "must pass a derived thing"); | 95 | 16.1M | return *static_cast<DerivedT*>(this); | 96 | 16.1M | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>, std::__1::forward_iterator_tag, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const&, long, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const*>::derived() Line | Count | Source | 92 | 347k | { | 93 | 347k | static_assert(std::is_base_of<iterator_facade, DerivedT>::value, | 94 | 347k | "must pass a derived thing"); | 95 | 347k | return *static_cast<DerivedT*>(this); | 96 | 347k | } |
|
97 | | |
98 | | public: |
99 | 28.5M | ReferenceT operator*() const { return access_t::dereference(derived()); }immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::operator*() const Line | Count | Source | 99 | 11.6M | ReferenceT operator*() const { return access_t::dereference(derived()); } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*>::operator*() const Line | Count | Source | 99 | 327k | ReferenceT operator*() const { return access_t::dereference(derived()); } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<unsigned long, int>, std::__1::pair<unsigned long, int> const&, long, std::__1::pair<unsigned long, int> const*>::operator*() const Line | Count | Source | 99 | 299k | ReferenceT operator*() const { return access_t::dereference(derived()); } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>, std::__1::forward_iterator_tag, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*>::operator*() const Line | Count | Source | 99 | 291k | ReferenceT operator*() const { return access_t::dereference(derived()); } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const&, long, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const*>::operator*() const Line | Count | Source | 99 | 213k | ReferenceT operator*() const { return access_t::dereference(derived()); } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, unsigned long, unsigned long const&, long, unsigned long const*>::operator*() const Line | Count | Source | 99 | 390k | ReferenceT operator*() const { return access_t::dereference(derived()); } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, unsigned long, unsigned long const&, long, unsigned long const*>::operator*() const Line | Count | Source | 99 | 99.0k | ReferenceT operator*() const { return access_t::dereference(derived()); } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<unsigned long, int>, std::__1::pair<unsigned long, int> const&, long, std::__1::pair<unsigned long, int> const*>::operator*() const Line | Count | Source | 99 | 44.4k | ReferenceT operator*() const { return access_t::dereference(derived()); } |
immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::operator*() const Line | Count | Source | 99 | 5.51M | ReferenceT operator*() const { return access_t::dereference(derived()); } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<unsigned long, int>, std::__1::pair<unsigned long, int> const&, long, std::__1::pair<unsigned long, int> const*>::operator*() const Line | Count | Source | 99 | 532k | ReferenceT operator*() const { return access_t::dereference(derived()); } |
immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::operator*() const Line | Count | Source | 99 | 9.00M | ReferenceT operator*() const { return access_t::dereference(derived()); } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>, std::__1::forward_iterator_tag, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const&, long, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const*>::operator*() const Line | Count | Source | 99 | 173k | ReferenceT operator*() const { return access_t::dereference(derived()); } |
|
100 | | PointerT operator->() const { return &access_t::dereference(derived()); } |
101 | | |
102 | | template <typename U = iterator_facade, |
103 | | typename std::enable_if_t<U::is_random_access, bool> = true> |
104 | | ReferenceT operator[](DifferenceTypeT n) const |
105 | | { |
106 | | return *(derived() + n); |
107 | | } |
108 | | |
109 | | friend bool operator==(const DerivedT& a, const DerivedT& b) |
110 | | { |
111 | | return access_t::equal(a, b); |
112 | | } |
113 | | friend bool operator!=(const DerivedT& a, const DerivedT& b) |
114 | 2.44M | { |
115 | 2.44M | return !access_t::equal(a, b); |
116 | 2.44M | } immer::detail::operator!=(immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 114 | 335k | { | 115 | 335k | return !access_t::equal(a, b); | 116 | 335k | } |
immer::detail::operator!=(immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 114 | 308k | { | 115 | 308k | return !access_t::equal(a, b); | 116 | 308k | } |
immer::detail::operator!=(immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&, immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&) Line | Count | Source | 114 | 301k | { | 115 | 301k | return !access_t::equal(a, b); | 116 | 301k | } |
immer::detail::operator!=(immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 114 | 221k | { | 115 | 221k | return !access_t::equal(a, b); | 116 | 221k | } |
immer::detail::operator!=(immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 114 | 399k | { | 115 | 399k | return !access_t::equal(a, b); | 116 | 399k | } |
immer::detail::operator!=(immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 114 | 103k | { | 115 | 103k | return !access_t::equal(a, b); | 116 | 103k | } |
immer::detail::operator!=(immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u> const&) Line | Count | Source | 114 | 51.1k | { | 115 | 51.1k | return !access_t::equal(a, b); | 116 | 51.1k | } |
immer::detail::operator!=(immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u> const&) Line | Count | Source | 114 | 540k | { | 115 | 540k | return !access_t::equal(a, b); | 116 | 540k | } |
immer::detail::operator!=(immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&, immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u> const&) Line | Count | Source | 114 | 185k | { | 115 | 185k | return !access_t::equal(a, b); | 116 | 185k | } |
|
117 | | |
118 | | DerivedT& operator++() |
119 | 24.5M | { |
120 | 24.5M | access_t::increment(derived()); |
121 | 24.5M | return derived(); |
122 | 24.5M | } immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::operator++() Line | Count | Source | 119 | 10.1M | { | 120 | 10.1M | access_t::increment(derived()); | 121 | 10.1M | return derived(); | 122 | 10.1M | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*>::operator++() Line | Count | Source | 119 | 327k | { | 120 | 327k | access_t::increment(derived()); | 121 | 327k | return derived(); | 122 | 327k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<unsigned long, int>, std::__1::pair<unsigned long, int> const&, long, std::__1::pair<unsigned long, int> const*>::operator++() Line | Count | Source | 119 | 299k | { | 120 | 299k | access_t::increment(derived()); | 121 | 299k | return derived(); | 122 | 299k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>, std::__1::forward_iterator_tag, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*>::operator++() Line | Count | Source | 119 | 291k | { | 120 | 291k | access_t::increment(derived()); | 121 | 291k | return derived(); | 122 | 291k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const&, long, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const*>::operator++() Line | Count | Source | 119 | 213k | { | 120 | 213k | access_t::increment(derived()); | 121 | 213k | return derived(); | 122 | 213k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, unsigned long, unsigned long const&, long, unsigned long const*>::operator++() Line | Count | Source | 119 | 390k | { | 120 | 390k | access_t::increment(derived()); | 121 | 390k | return derived(); | 122 | 390k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<unsigned long, colliding_hash_t, std::__1::equal_to<unsigned long>, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, unsigned long, unsigned long const&, long, unsigned long const*>::operator++() Line | Count | Source | 119 | 99.0k | { | 120 | 99.0k | access_t::increment(derived()); | 121 | 99.0k | return derived(); | 122 | 99.0k | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<unsigned long, int>, std::__1::pair<unsigned long, int> const&, long, std::__1::pair<unsigned long, int> const*>::operator++() Line | Count | Source | 119 | 44.4k | { | 120 | 44.4k | access_t::increment(derived()); | 121 | 44.4k | return derived(); | 122 | 44.4k | } |
immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::operator++() Line | Count | Source | 119 | 4.17M | { | 120 | 4.17M | access_t::increment(derived()); | 121 | 4.17M | return derived(); | 122 | 4.17M | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<unsigned long, int>, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::hash_key, immer::map<unsigned long, int, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>::equal_key, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 5u>, std::__1::forward_iterator_tag, std::__1::pair<unsigned long, int>, std::__1::pair<unsigned long, int> const&, long, std::__1::pair<unsigned long, int> const*>::operator++() Line | Count | Source | 119 | 532k | { | 120 | 532k | access_t::increment(derived()); | 121 | 532k | return derived(); | 122 | 532k | } |
immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::operator++() Line | Count | Source | 119 | 7.87M | { | 120 | 7.87M | access_t::increment(derived()); | 121 | 7.87M | return derived(); | 122 | 7.87M | } |
immer::detail::iterator_facade<immer::detail::hamts::champ_iterator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::hash_key, immer::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> >, colliding_hash_t, std::__1::equal_to<void>, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>::equal_key, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u>, std::__1::forward_iterator_tag, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const&, long, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::box<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true> > > const*>::operator++() Line | Count | Source | 119 | 173k | { | 120 | 173k | access_t::increment(derived()); | 121 | 173k | return derived(); | 122 | 173k | } |
|
123 | | DerivedT operator++(int) |
124 | | { |
125 | | auto tmp = derived(); |
126 | | access_t::increment(derived()); |
127 | | return tmp; |
128 | | } |
129 | | |
130 | | template < |
131 | | typename U = iterator_facade, |
132 | | typename std::enable_if_t<U::is_bidirectional || U::is_random_access, |
133 | | bool> = true> |
134 | | DerivedT& operator--() |
135 | | { |
136 | | access_t::decrement(derived()); |
137 | | return derived(); |
138 | | } |
139 | | template < |
140 | | typename U = iterator_facade, |
141 | | typename std::enable_if_t<U::is_bidirectional || U::is_random_access, |
142 | | bool> = true> |
143 | | DerivedT operator--(int) |
144 | | { |
145 | | auto tmp = derived(); |
146 | | access_t::decrement(derived()); |
147 | | return tmp; |
148 | | } |
149 | | |
150 | | DerivedT& operator+=(DifferenceTypeT n) |
151 | 612k | { |
152 | 612k | access_t::advance(derived(), n); |
153 | 612k | return derived(); |
154 | 612k | } immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, false, true>, 3u, 3u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::operator+=(long) Line | Count | Source | 151 | 228k | { | 152 | 228k | access_t::advance(derived(), n); | 153 | 228k | return derived(); | 154 | 228k | } |
immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::free_list_heap_policy<immer::cpp_heap, 1024ul>, immer::refcount_policy, immer::spinlock_policy, immer::no_transience_policy, false, true>, 2u, 2u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::operator+=(long) Line | Count | Source | 151 | 207k | { | 152 | 207k | access_t::advance(derived(), n); | 153 | 207k | return derived(); | 154 | 207k | } |
immer::detail::iterator_facade<immer::detail::rbts::rrbtree_iterator<int, immer::memory_policy<immer::heap_policy<immer::cpp_heap>, immer::unsafe_refcount_policy, immer::no_lock_policy, immer::no_transience_policy, true, true>, 3u, 3u>, std::__1::random_access_iterator_tag, int, int const&, long, int const*>::operator+=(long) Line | Count | Source | 151 | 177k | { | 152 | 177k | access_t::advance(derived(), n); | 153 | 177k | return derived(); | 154 | 177k | } |
|
155 | | DerivedT& operator-=(DifferenceTypeT n) |
156 | | { |
157 | | access_t::advance(derived(), -n); |
158 | | return derived(); |
159 | | } |
160 | | |
161 | | template <typename U = iterator_facade, |
162 | | typename std::enable_if_t<U::is_random_access, bool> = true> |
163 | | DerivedT operator+(DifferenceTypeT n) const |
164 | 204k | { |
165 | 204k | auto tmp = derived(); |
166 | 204k | return tmp += n; |
167 | 204k | } _ZNK5immer6detail15iterator_facadeINS0_4rbts16rrbtree_iteratorIiNS_13memory_policyINS_11heap_policyINS_8cpp_heapEEENS_22unsafe_refcount_policyENS_14no_lock_policyENS_20no_transience_policyELb0ELb1EEELj3ELj3EEENSt3__126random_access_iterator_tagEiRKilPSF_EplISI_TnNSD_9enable_ifIXsrT_16is_random_accessEbE4typeELb1EEESC_l Line | Count | Source | 164 | 70.9k | { | 165 | 70.9k | auto tmp = derived(); | 166 | 70.9k | return tmp += n; | 167 | 70.9k | } |
_ZNK5immer6detail15iterator_facadeINS0_4rbts16rrbtree_iteratorIiNS_13memory_policyINS_21free_list_heap_policyINS_8cpp_heapELm1024EEENS_15refcount_policyENS_15spinlock_policyENS_20no_transience_policyELb0ELb1EEELj2ELj2EEENSt3__126random_access_iterator_tagEiRKilPSF_EplISI_TnNSD_9enable_ifIXsrT_16is_random_accessEbE4typeELb1EEESC_l Line | Count | Source | 164 | 41.4k | { | 165 | 41.4k | auto tmp = derived(); | 166 | 41.4k | return tmp += n; | 167 | 41.4k | } |
_ZNK5immer6detail15iterator_facadeINS0_4rbts16rrbtree_iteratorIiNS_13memory_policyINS_11heap_policyINS_8cpp_heapEEENS_22unsafe_refcount_policyENS_14no_lock_policyENS_20no_transience_policyELb1ELb1EEELj3ELj3EEENSt3__126random_access_iterator_tagEiRKilPSF_EplISI_TnNSD_9enable_ifIXsrT_16is_random_accessEbE4typeELb1EEESC_l Line | Count | Source | 164 | 92.0k | { | 165 | 92.0k | auto tmp = derived(); | 166 | 92.0k | return tmp += n; | 167 | 92.0k | } |
|
168 | | template <typename U = iterator_facade, |
169 | | typename std::enable_if_t<U::is_random_access, bool> = true> |
170 | | friend DerivedT operator+(DifferenceTypeT n, const DerivedT& i) |
171 | | { |
172 | | return i + n; |
173 | | } |
174 | | template <typename U = iterator_facade, |
175 | | typename std::enable_if_t<U::is_random_access, bool> = true> |
176 | | DerivedT operator-(DifferenceTypeT n) const |
177 | | { |
178 | | auto tmp = derived(); |
179 | | return tmp -= n; |
180 | | } |
181 | | |
182 | | template <typename U = iterator_facade, |
183 | | typename std::enable_if_t<U::is_random_access, bool> = true> |
184 | | friend DifferenceTypeT operator-(const DerivedT& a, const DerivedT& b) |
185 | | { |
186 | | return access_t::distance_to(b, a); |
187 | | } |
188 | | |
189 | | template <typename U = iterator_facade, |
190 | | typename std::enable_if_t<U::is_random_access, bool> = true> |
191 | | friend bool operator<(const DerivedT& a, const DerivedT& b) |
192 | | |
193 | | { |
194 | | return access_t::distance_to(a, b) > 0; |
195 | | } |
196 | | template <typename U = iterator_facade, |
197 | | typename std::enable_if_t<U::is_random_access, bool> = true> |
198 | | friend bool operator<=(const DerivedT& a, const DerivedT& b) |
199 | | { |
200 | | return access_t::distance_to(a, b) >= 0; |
201 | | } |
202 | | template <typename U = iterator_facade, |
203 | | typename std::enable_if_t<U::is_random_access, bool> = true> |
204 | | friend bool operator>(const DerivedT& a, const DerivedT& b) |
205 | | |
206 | | { |
207 | | return access_t::distance_to(a, b) < 0; |
208 | | } |
209 | | template <typename U = iterator_facade, |
210 | | typename std::enable_if_t<U::is_random_access, bool> = true> |
211 | | friend bool operator>=(const DerivedT& a, const DerivedT& b) |
212 | | { |
213 | | return access_t::distance_to(a, b) <= 0; |
214 | | } |
215 | | }; |
216 | | |
217 | | } // namespace detail |
218 | | } // namespace immer |