Coverage Report

Created: 2024-08-21 05:08

/workdir/bitcoin/src/span.h
Line
Count
Source (jump to first uncovered line)
1
// Copyright (c) 2018-2022 The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#ifndef BITCOIN_SPAN_H
6
#define BITCOIN_SPAN_H
7
8
#include <algorithm>
9
#include <cassert>
10
#include <cstddef>
11
#include <span>
12
#include <type_traits>
13
14
#ifdef DEBUG
15
#define CONSTEXPR_IF_NOT_DEBUG
16
#define ASSERT_IF_DEBUG(x) assert((x))
17
#else
18
#define CONSTEXPR_IF_NOT_DEBUG constexpr
19
#define ASSERT_IF_DEBUG(x)
20
#endif
21
22
#if defined(__clang__)
23
#if __has_attribute(lifetimebound)
24
#define SPAN_ATTR_LIFETIMEBOUND [[clang::lifetimebound]]
25
#else
26
#define SPAN_ATTR_LIFETIMEBOUND
27
#endif
28
#else
29
#define SPAN_ATTR_LIFETIMEBOUND
30
#endif
31
32
/** A Span is an object that can refer to a contiguous sequence of objects.
33
 *
34
 * This file implements a subset of C++20's std::span.  It can be considered
35
 * temporary compatibility code until C++20 and is designed to be a
36
 * self-contained abstraction without depending on other project files. For this
37
 * reason, Clang lifetimebound is defined here instead of including
38
 * <attributes.h>, which also defines it.
39
 *
40
 * Things to be aware of when writing code that deals with Spans:
41
 *
42
 * - Similar to references themselves, Spans are subject to reference lifetime
43
 *   issues. The user is responsible for making sure the objects pointed to by
44
 *   a Span live as long as the Span is used. For example:
45
 *
46
 *       std::vector<int> vec{1,2,3,4};
47
 *       Span<int> sp(vec);
48
 *       vec.push_back(5);
49
 *       printf("%i\n", sp.front()); // UB!
50
 *
51
 *   may exhibit undefined behavior, as increasing the size of a vector may
52
 *   invalidate references.
53
 *
54
 * - One particular pitfall is that Spans can be constructed from temporaries,
55
 *   but this is unsafe when the Span is stored in a variable, outliving the
56
 *   temporary. For example, this will compile, but exhibits undefined behavior:
57
 *
58
 *       Span<const int> sp(std::vector<int>{1, 2, 3});
59
 *       printf("%i\n", sp.front()); // UB!
60
 *
61
 *   The lifetime of the vector ends when the statement it is created in ends.
62
 *   Thus the Span is left with a dangling reference, and using it is undefined.
63
 *
64
 * - Due to Span's automatic creation from range-like objects (arrays, and data
65
 *   types that expose a data() and size() member function), functions that
66
 *   accept a Span as input parameter can be called with any compatible
67
 *   range-like object. For example, this works:
68
 *
69
 *       void Foo(Span<const int> arg);
70
 *
71
 *       Foo(std::vector<int>{1, 2, 3}); // Works
72
 *
73
 *   This is very useful in cases where a function truly does not care about the
74
 *   container, and only about having exactly a range of elements. However it
75
 *   may also be surprising to see automatic conversions in this case.
76
 *
77
 *   When a function accepts a Span with a mutable element type, it will not
78
 *   accept temporaries; only variables or other references. For example:
79
 *
80
 *       void FooMut(Span<int> arg);
81
 *
82
 *       FooMut(std::vector<int>{1, 2, 3}); // Does not compile
83
 *       std::vector<int> baz{1, 2, 3};
84
 *       FooMut(baz); // Works
85
 *
86
 *   This is similar to how functions that take (non-const) lvalue references
87
 *   as input cannot accept temporaries. This does not work either:
88
 *
89
 *       void FooVec(std::vector<int>& arg);
90
 *       FooVec(std::vector<int>{1, 2, 3}); // Does not compile
91
 *
92
 *   The idea is that if a function accepts a mutable reference, a meaningful
93
 *   result will be present in that variable after the call. Passing a temporary
94
 *   is useless in that context.
95
 */
96
template<typename C>
97
class Span
98
{
99
    C* m_data;
100
    std::size_t m_size{0};
101
102
    template <class T>
103
    struct is_Span_int : public std::false_type {};
104
    template <class T>
105
    struct is_Span_int<Span<T>> : public std::true_type {};
106
    template <class T>
107
    struct is_Span : public is_Span_int<typename std::remove_cv<T>::type>{};
108
109
110
public:
111
0
    constexpr Span() noexcept : m_data(nullptr) {}
Unexecuted instantiation: Span<std::byte const>::Span()
Unexecuted instantiation: Span<std::byte>::Span()
112
113
    /** Construct a span from a begin pointer and a size.
114
     *
115
     * This implements a subset of the iterator-based std::span constructor in C++20,
116
     * which is hard to implement without std::address_of.
117
     */
118
    template <typename T, typename std::enable_if<std::is_convertible<T (*)[], C (*)[]>::value, int>::type = 0>
119
6.30M
    constexpr Span(T* begin, std::size_t size) noexcept : m_data(begin), m_size(size) {}
_ZN4SpanIKSt4byteEC2IS1_TnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S1_EE5valueEiE4typeELi0EEEPS5_m
Line
Count
Source
119
3.06M
    constexpr Span(T* begin, std::size_t size) noexcept : m_data(begin), m_size(size) {}
_ZN4SpanISt4byteEC2IS0_TnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S0_EE5valueEiE4typeELi0EEEPS4_m
Line
Count
Source
119
596k
    constexpr Span(T* begin, std::size_t size) noexcept : m_data(begin), m_size(size) {}
_ZN4SpanIjEC2IjTnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_jEE5valueEiE4typeELi0EEEPS3_m
Line
Count
Source
119
2.09M
    constexpr Span(T* begin, std::size_t size) noexcept : m_data(begin), m_size(size) {}
Unexecuted instantiation: _ZN4SpanItEC2ItTnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_tEE5valueEiE4typeELi0EEEPS3_m
_ZN4SpanImEC2ImTnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_mEE5valueEiE4typeELi0EEEPS3_m
Line
Count
Source
119
72.5k
    constexpr Span(T* begin, std::size_t size) noexcept : m_data(begin), m_size(size) {}
_ZN4SpanIhEC2IhTnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_hEE5valueEiE4typeELi0EEEPS3_m
Line
Count
Source
119
352k
    constexpr Span(T* begin, std::size_t size) noexcept : m_data(begin), m_size(size) {}
_ZN4SpanIKhEC2IS0_TnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S0_EE5valueEiE4typeELi0EEEPS4_m
Line
Count
Source
119
128k
    constexpr Span(T* begin, std::size_t size) noexcept : m_data(begin), m_size(size) {}
Unexecuted instantiation: _ZN4SpanIKjEC2IS0_TnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S0_EE5valueEiE4typeELi0EEEPS4_m
Unexecuted instantiation: _ZN4SpanI7CScriptEC2IS0_TnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S0_EE5valueEiE4typeELi0EEEPS4_m
Unexecuted instantiation: miniscript.cpp:_ZN4SpanISt8optionalISt3setI7CPubKeyZNK10miniscript4NodeIS2_E17DuplicateKeyCheckIN12_GLOBAL__N_113ParserContextEEEvRKT_E4CompSaIS2_EEEEC2ISF_TnNSt9enable_ifIXsr3std14is_convertibleIPA_S9_PA_SF_EE5valueEiE4typeELi0EEEPS9_m
Unexecuted instantiation: _ZN4SpanIN10miniscript8internal11InputResultEEC2IS2_TnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S2_EE5valueEiE4typeELi0EEEPS6_m
Unexecuted instantiation: _ZN4SpanIiEC2IiTnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_iEE5valueEiE4typeELi0EEEPS3_m
Unexecuted instantiation: _ZN4SpanINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2IS5_TnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S5_EE5valueEiE4typeELi0EEEPS9_m
Unexecuted instantiation: _ZN4SpanIKcEC2IS0_TnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S0_EE5valueEiE4typeELi0EEEPS4_m
Unexecuted instantiation: miniscript.cpp:_ZN4SpanISt8optionalISt3setI7CPubKeyZNK10miniscript4NodeIS2_E17DuplicateKeyCheckIN12_GLOBAL__N_113KeyComparatorEEEvRKT_E4CompSaIS2_EEEEC2ISF_TnNSt9enable_ifIXsr3std14is_convertibleIPA_S9_PA_SF_EE5valueEiE4typeELi0EEEPS9_m
Unexecuted instantiation: miniscript.cpp:_ZN4SpanISt8optionalISt3setIN12_GLOBAL__N_119ScriptParserContext3KeyEZNK10miniscript4NodeIS4_E17DuplicateKeyCheckIS3_EEvRKT_E4CompSaIS4_EEEEC2ISF_TnNSt9enable_ifIXsr3std14is_convertibleIPA_S9_PA_SF_EE5valueEiE4typeELi0EEEPS9_m
Unexecuted instantiation: _ZN4SpanIKhEC2IhTnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S0_EE5valueEiE4typeELi0EEEPS4_m
Unexecuted instantiation: _ZN4SpanIKSt6vectorIhSaIhEEEC2IS3_TnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S3_EE5valueEiE4typeELi0EEEPS7_m
Unexecuted instantiation: descriptor.cpp:_ZN4SpanISt8optionalISt3setIjZNK10miniscript4NodeIjE17DuplicateKeyCheckIN12_GLOBAL__N_19KeyParserEEEvRKT_E4CompSaIjEEEEC2ISE_TnNSt9enable_ifIXsr3std14is_convertibleIPA_S8_PA_SE_EE5valueEiE4typeELi0EEEPS8_m
Unexecuted instantiation: _ZN4SpanIPKN10miniscript4NodeIjEEEC2IS4_TnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S4_EE5valueEiE4typeELi0EEEPS8_m
Unexecuted instantiation: _ZN4SpanISt8optionalISt3setI11XOnlyPubKeyZNK10miniscript4NodeIS2_E17DuplicateKeyCheckI12TapSatisfierEEvRKT_E4CompSaIS2_EEEEC2ISE_TnNSt9enable_ifIXsr3std14is_convertibleIPA_S8_PA_SE_EE5valueEiE4typeELi0EEEPS8_m
Unexecuted instantiation: _ZN4SpanISt8optionalISt3setI7CPubKeyZNK10miniscript4NodeIS2_E17DuplicateKeyCheckI12WshSatisfierEEvRKT_E4CompSaIS2_EEEEC2ISE_TnNSt9enable_ifIXsr3std14is_convertibleIPA_S8_PA_SE_EE5valueEiE4typeELi0EEEPS8_m
120
121
    /** Construct a span from a begin and end pointer.
122
     *
123
     * This implements a subset of the iterator-based std::span constructor in C++20,
124
     * which is hard to implement without std::address_of.
125
     */
126
    template <typename T, typename std::enable_if<std::is_convertible<T (*)[], C (*)[]>::value, int>::type = 0>
127
0
    CONSTEXPR_IF_NOT_DEBUG Span(T* begin, T* end) noexcept : m_data(begin), m_size(end - begin)
128
0
    {
129
0
        ASSERT_IF_DEBUG(end >= begin);
130
0
    }
Unexecuted instantiation: _ZN4SpanIKcEC2IS0_TnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S0_EE5valueEiE4typeELi0EEEPS4_SB_
Unexecuted instantiation: _ZN4SpanIhEC2IhTnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_hEE5valueEiE4typeELi0EEEPS3_SA_
131
132
    /** Implicit conversion of spans between compatible types.
133
     *
134
     *  Specifically, if a pointer to an array of type O can be implicitly converted to a pointer to an array of type
135
     *  C, then permit implicit conversion of Span<O> to Span<C>. This matches the behavior of the corresponding
136
     *  C++20 std::span constructor.
137
     *
138
     *  For example this means that a Span<T> can be converted into a Span<const T>.
139
     */
140
    template <typename O, typename std::enable_if<std::is_convertible<O (*)[], C (*)[]>::value, int>::type = 0>
141
0
    constexpr Span(const Span<O>& other) noexcept : m_data(other.m_data), m_size(other.m_size) {}
Unexecuted instantiation: _ZN4SpanIKhEC2IhTnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S0_EE5valueEiE4typeELi0EEERKS_IS4_E
Unexecuted instantiation: _ZN4SpanIKSt4byteEC2IS0_TnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S1_EE5valueEiE4typeELi0EEERKS_IS5_E
Unexecuted instantiation: _ZN4SpanIK7CScriptEC2IS0_TnNSt9enable_ifIXsr3std14is_convertibleIPA_T_PA_S1_EE5valueEiE4typeELi0EEERKS_IS5_E
142
143
    /** Default copy constructor. */
144
    constexpr Span(const Span&) noexcept = default;
145
146
    /** Default assignment operator. */
147
    Span& operator=(const Span& other) noexcept = default;
148
149
    /** Construct a Span from an array. This matches the corresponding C++20 std::span constructor. */
150
    template <int N>
151
67.1k
    constexpr Span(C (&a)[N]) noexcept : m_data(a), m_size(N) {}
Unexecuted instantiation: Span<unsigned char>::Span<5>(unsigned char (&) [5])
Span<unsigned char>::Span<4>(unsigned char (&) [4])
Line
Count
Source
151
13.5k
    constexpr Span(C (&a)[N]) noexcept : m_data(a), m_size(N) {}
Unexecuted instantiation: Span<unsigned char const>::Span<65>(unsigned char const (&) [65])
Unexecuted instantiation: Span<std::byte>::Span<16>(std::byte (&) [16])
Unexecuted instantiation: Span<std::byte const>::Span<16>(std::byte const (&) [16])
Span<unsigned char>::Span<16>(unsigned char (&) [16])
Line
Count
Source
151
870
    constexpr Span(C (&a)[N]) noexcept : m_data(a), m_size(N) {}
Span<unsigned char const>::Span<16>(unsigned char const (&) [16])
Line
Count
Source
151
4.35k
    constexpr Span(C (&a)[N]) noexcept : m_data(a), m_size(N) {}
Span<unsigned char const>::Span<4>(unsigned char const (&) [4])
Line
Count
Source
151
17.4k
    constexpr Span(C (&a)[N]) noexcept : m_data(a), m_size(N) {}
Unexecuted instantiation: Span<unsigned char const>::Span<5>(unsigned char const (&) [5])
Unexecuted instantiation: Span<unsigned char const>::Span<78>(unsigned char const (&) [78])
Span<char>::Span<12>(char (&) [12])
Line
Count
Source
151
13.5k
    constexpr Span(C (&a)[N]) noexcept : m_data(a), m_size(N) {}
Span<char const>::Span<12>(char const (&) [12])
Line
Count
Source
151
17.4k
    constexpr Span(C (&a)[N]) noexcept : m_data(a), m_size(N) {}
Unexecuted instantiation: Span<char const>::Span<8>(char const (&) [8])
Unexecuted instantiation: Span<unsigned char const>::Span<32>(unsigned char const (&) [32])
Unexecuted instantiation: Span<unsigned char>::Span<32>(unsigned char (&) [32])
Unexecuted instantiation: Span<std::byte const>::Span<3>(std::byte const (&) [3])
Unexecuted instantiation: Span<std::byte const>::Span<1>(std::byte const (&) [1])
Unexecuted instantiation: Span<std::byte>::Span<3>(std::byte (&) [3])
Unexecuted instantiation: Span<std::byte>::Span<1>(std::byte (&) [1])
Unexecuted instantiation: Span<char>::Span<368>(char (&) [368])
Unexecuted instantiation: Span<unsigned char>::Span<20>(unsigned char (&) [20])
Unexecuted instantiation: Span<CRPCCommand const>::Span<68>(CRPCCommand const (&) [68])
Unexecuted instantiation: Span<unsigned char const>::Span<33>(unsigned char const (&) [33])
Unexecuted instantiation: Span<unsigned char>::Span<8>(unsigned char (&) [8])
Unexecuted instantiation: Span<unsigned char const>::Span<8>(unsigned char const (&) [8])
Unexecuted instantiation: Span<unsigned char const>::Span<1>(unsigned char const (&) [1])
Unexecuted instantiation: Span<unsigned char const>::Span<2>(unsigned char const (&) [2])
Unexecuted instantiation: Span<char const>::Span<2>(char const (&) [2])
Unexecuted instantiation: Span<char const>::Span<3>(char const (&) [3])
Unexecuted instantiation: Span<unsigned char const>::Span<20>(unsigned char const (&) [20])
Unexecuted instantiation: Span<std::byte>::Span<32>(std::byte (&) [32])
Unexecuted instantiation: Span<std::byte const>::Span<32>(std::byte const (&) [32])
Unexecuted instantiation: Span<std::byte>::Span<64>(std::byte (&) [64])
Unexecuted instantiation: Span<unsigned char>::Span<384>(unsigned char (&) [384])
Unexecuted instantiation: Span<unsigned char const>::Span<384>(unsigned char const (&) [384])
152
153
    /** Construct a Span for objects with .data() and .size() (std::string, std::array, std::vector, ...).
154
     *
155
     * This implements a subset of the functionality provided by the C++20 std::span range-based constructor.
156
     *
157
     * To prevent surprises, only Spans for constant value types are supported when passing in temporaries.
158
     * Note that this restriction does not exist when converting arrays or other Spans (see above).
159
     */
160
    template <typename V>
161
    constexpr Span(V& other SPAN_ATTR_LIFETIMEBOUND,
162
        typename std::enable_if<!is_Span<V>::value &&
163
                                std::is_convertible<typename std::remove_pointer<decltype(std::declval<V&>().data())>::type (*)[], C (*)[]>::value &&
164
                                std::is_convertible<decltype(std::declval<V&>().size()), std::size_t>::value, std::nullptr_t>::type = nullptr)
165
186k
        : m_data(other.data()), m_size(other.size()){}
Span<unsigned char>::Span<std::array<unsigned char, 32ul> >(std::array<unsigned char, 32ul>&, std::enable_if<((!is_Span<std::array<unsigned char, 32ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<unsigned char, 32ul>&>)()).data)())>::type (*) [], unsigned char (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<unsigned char, 32ul>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Line
Count
Source
165
129k
        : m_data(other.data()), m_size(other.size()){}
Unexecuted instantiation: Span<unsigned char const>::Span<std::span<unsigned char const, 18446744073709551615ul> >(std::span<unsigned char const, 18446744073709551615ul>&, std::enable_if<((!is_Span<std::span<unsigned char const, 18446744073709551615ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::span<unsigned char const, 18446744073709551615ul>&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::span<unsigned char const, 18446744073709551615ul>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<std::vector<unsigned char, std::allocator<unsigned char> > >(std::vector<unsigned char, std::allocator<unsigned char> >&, std::enable_if<((!is_Span<std::vector<unsigned char, std::allocator<unsigned char> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<unsigned char, std::allocator<unsigned char> >&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<unsigned char, std::allocator<unsigned char> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char>::Span<uint160>(uint160&, std::enable_if<((!is_Span<uint160>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<uint160&>)()).data)())>::type (*) [], unsigned char (*) []>::value)&&std::is_convertible<decltype ((((std::declval<uint160&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char>::Span<std::vector<unsigned char, std::allocator<unsigned char> > >(std::vector<unsigned char, std::allocator<unsigned char> >&, std::enable_if<((!is_Span<std::vector<unsigned char, std::allocator<unsigned char> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<unsigned char, std::allocator<unsigned char> >&>)()).data)())>::type (*) [], unsigned char (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<unsigned char, std::allocator<unsigned char> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Span<std::byte>::Span<std::array<std::byte, 8ul> >(std::array<std::byte, 8ul>&, std::enable_if<((!is_Span<std::array<std::byte, 8ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<std::byte, 8ul>&>)()).data)())>::type (*) [], std::byte (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<std::byte, 8ul>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Line
Count
Source
165
3.72k
        : m_data(other.data()), m_size(other.size()){}
Unexecuted instantiation: Span<char>::Span<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::enable_if<((!is_Span<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>)()).data)())>::type (*) [], char (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte const>::Span<std::vector<std::byte, std::allocator<std::byte> > >(std::vector<std::byte, std::allocator<std::byte> >&, std::enable_if<((!is_Span<std::vector<std::byte, std::allocator<std::byte> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<std::byte, std::allocator<std::byte> >&>)()).data)())>::type (*) [], std::byte const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<std::byte, std::allocator<std::byte> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte>::Span<std::vector<std::byte, std::allocator<std::byte> > >(std::vector<std::byte, std::allocator<std::byte> >&, std::enable_if<((!is_Span<std::vector<std::byte, std::allocator<std::byte> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<std::byte, std::allocator<std::byte> >&>)()).data)())>::type (*) [], std::byte (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<std::byte, std::allocator<std::byte> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned int const>::Span<std::vector<unsigned int, std::allocator<unsigned int> > >(std::vector<unsigned int, std::allocator<unsigned int> >&, std::enable_if<((!is_Span<std::vector<unsigned int, std::allocator<unsigned int> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<unsigned int, std::allocator<unsigned int> >&>)()).data)())>::type (*) [], unsigned int const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<unsigned int, std::allocator<unsigned int> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<FeeFrac const>::Span<std::vector<FeeFrac, std::allocator<FeeFrac> > >(std::vector<FeeFrac, std::allocator<FeeFrac> >&, std::enable_if<((!is_Span<std::vector<FeeFrac, std::allocator<FeeFrac> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<FeeFrac, std::allocator<FeeFrac> >&>)()).data)())>::type (*) [], FeeFrac const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<FeeFrac, std::allocator<FeeFrac> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned int>::Span<std::vector<unsigned int, std::allocator<unsigned int> > >(std::vector<unsigned int, std::allocator<unsigned int> >&, std::enable_if<((!is_Span<std::vector<unsigned int, std::allocator<unsigned int> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<unsigned int, std::allocator<unsigned int> >&>)()).data)())>::type (*) [], unsigned int (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<unsigned int, std::allocator<unsigned int> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char>::Span<prevector<33u, unsigned char, unsigned int, int> >(prevector<33u, unsigned char, unsigned int, int>&, std::enable_if<((!is_Span<prevector<33u, unsigned char, unsigned int, int> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<prevector<33u, unsigned char, unsigned int, int>&>)()).data)())>::type (*) [], unsigned char (*) []>::value)&&std::is_convertible<decltype ((((std::declval<prevector<33u, unsigned char, unsigned int, int>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char>::Span<CScript>(CScript&, std::enable_if<((!is_Span<CScript>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<CScript&>)()).data)())>::type (*) [], unsigned char (*) []>::value)&&std::is_convertible<decltype ((((std::declval<CScript&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Span<unsigned char>::Span<uint256>(uint256&, std::enable_if<((!is_Span<uint256>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<uint256&>)()).data)())>::type (*) [], unsigned char (*) []>::value)&&std::is_convertible<decltype ((((std::declval<uint256&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Line
Count
Source
165
35.6k
        : m_data(other.data()), m_size(other.size()){}
Unexecuted instantiation: Span<std::byte>::Span<std::array<std::byte, 16ul> >(std::array<std::byte, 16ul>&, std::enable_if<((!is_Span<std::array<std::byte, 16ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<std::byte, 16ul>&>)()).data)())>::type (*) [], std::byte (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<std::byte, 16ul>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char>::Span<prevector<16u, unsigned char, unsigned int, int> >(prevector<16u, unsigned char, unsigned int, int>&, std::enable_if<((!is_Span<prevector<16u, unsigned char, unsigned int, int> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<prevector<16u, unsigned char, unsigned int, int>&>)()).data)())>::type (*) [], unsigned char (*) []>::value)&&std::is_convertible<decltype ((((std::declval<prevector<16u, unsigned char, unsigned int, int>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Span<unsigned char>::Span<std::array<unsigned char, 4ul> >(std::array<unsigned char, 4ul>&, std::enable_if<((!is_Span<std::array<unsigned char, 4ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<unsigned char, 4ul>&>)()).data)())>::type (*) [], unsigned char (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<unsigned char, 4ul>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Line
Count
Source
165
13.5k
        : m_data(other.data()), m_size(other.size()){}
Unexecuted instantiation: Span<unsigned char>::Span<std::array<unsigned char, 5ul> >(std::array<unsigned char, 5ul>&, std::enable_if<((!is_Span<std::array<unsigned char, 5ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<unsigned char, 5ul>&>)()).data)())>::type (*) [], unsigned char (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<unsigned char, 5ul>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char>::Span<std::array<unsigned char, 20ul> >(std::array<unsigned char, 20ul>&, std::enable_if<((!is_Span<std::array<unsigned char, 20ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<unsigned char, 20ul>&>)()).data)())>::type (*) [], unsigned char (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<unsigned char, 20ul>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<XOnlyPubKey>(XOnlyPubKey&, std::enable_if<((!is_Span<XOnlyPubKey>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<XOnlyPubKey&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<XOnlyPubKey&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<CScript>::Span<std::vector<CScript, std::allocator<CScript> > >(std::vector<CScript, std::allocator<CScript> >&, std::enable_if<((!is_Span<std::vector<CScript, std::allocator<CScript> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<CScript, std::allocator<CScript> >&>)()).data)())>::type (*) [], CScript (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<CScript, std::allocator<CScript> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: miniscript.cpp:Span<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > > >::Span<std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > > > > >(std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > > > >&, std::enable_if<((!is_Span<std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > > > > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > > > >&>)()).data)())>::type (*) [], std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > > (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > > > >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<miniscript::internal::InputResult>::Span<std::vector<miniscript::internal::InputResult, std::allocator<miniscript::internal::InputResult> > >(std::vector<miniscript::internal::InputResult, std::allocator<miniscript::internal::InputResult> >&, std::enable_if<((!is_Span<std::vector<miniscript::internal::InputResult, std::allocator<miniscript::internal::InputResult> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<miniscript::internal::InputResult, std::allocator<miniscript::internal::InputResult> >&>)()).data)())>::type (*) [], miniscript::internal::InputResult (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<miniscript::internal::InputResult, std::allocator<miniscript::internal::InputResult> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<int>::Span<std::vector<int, std::allocator<int> > >(std::vector<int, std::allocator<int> >&, std::enable_if<((!is_Span<std::vector<int, std::allocator<int> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<int, std::allocator<int> >&>)()).data)())>::type (*) [], int (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<int, std::allocator<int> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Span<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::enable_if<((!is_Span<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&>)()).data)())>::type (*) [], std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: miniscript.cpp:Span<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > > >::Span<std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > > > > >(std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > > > >&, std::enable_if<((!is_Span<std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > > > > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > > > >&>)()).data)())>::type (*) [], std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > > (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > > > >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: miniscript.cpp:Span<std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > > >::Span<std::vector<std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > >, std::allocator<std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > > > > >(std::vector<std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > >, std::allocator<std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > > > >&, std::enable_if<((!is_Span<std::vector<std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > >, std::allocator<std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > > > > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > >, std::allocator<std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > > > >&>)()).data)())>::type (*) [], std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > > (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > >, std::allocator<std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > > > >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte>::Span<DataStream>(DataStream&, std::enable_if<((!is_Span<DataStream>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<DataStream&>)()).data)())>::type (*) [], std::byte (*) []>::value)&&std::is_convertible<decltype ((((std::declval<DataStream&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<char const>::Span<std::basic_string_view<char, std::char_traits<char> > >(std::basic_string_view<char, std::char_traits<char> >&, std::enable_if<((!is_Span<std::basic_string_view<char, std::char_traits<char> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::basic_string_view<char, std::char_traits<char> >&>)()).data)())>::type (*) [], char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::basic_string_view<char, std::char_traits<char> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte const>::Span<DataStream>(DataStream&, std::enable_if<((!is_Span<DataStream>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<DataStream&>)()).data)())>::type (*) [], std::byte const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<DataStream&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<char const>::Span<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::enable_if<((!is_Span<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>)()).data)())>::type (*) [], char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte const>::Span<std::vector<std::byte, zero_after_free_allocator<std::byte> > >(std::vector<std::byte, zero_after_free_allocator<std::byte> >&, std::enable_if<((!is_Span<std::vector<std::byte, zero_after_free_allocator<std::byte> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<std::byte, zero_after_free_allocator<std::byte> >&>)()).data)())>::type (*) [], std::byte const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<std::byte, zero_after_free_allocator<std::byte> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<CPubKey>(CPubKey&, std::enable_if<((!is_Span<CPubKey>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<CPubKey&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<CPubKey&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte const>::Span<std::array<std::byte, 32ul> >(std::array<std::byte, 32ul>&, std::enable_if<((!is_Span<std::array<std::byte, 32ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<std::byte, 32ul>&>)()).data)())>::type (*) [], std::byte const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<std::byte, 32ul>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<uint256>(uint256&, std::enable_if<((!is_Span<uint256>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<uint256&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<uint256&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<std::array<unsigned char, 4ul> >(std::array<unsigned char, 4ul>&, std::enable_if<((!is_Span<std::array<unsigned char, 4ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<unsigned char, 4ul>&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<unsigned char, 4ul>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte const>::Span<std::array<std::byte, 8ul> >(std::array<std::byte, 8ul>&, std::enable_if<((!is_Span<std::array<std::byte, 8ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<std::byte, 8ul>&>)()).data)())>::type (*) [], std::byte const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<std::byte, 8ul>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<CScript>(CScript&, std::enable_if<((!is_Span<CScript>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<CScript&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<CScript&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte>::Span<std::vector<std::byte, zero_after_free_allocator<std::byte> > >(std::vector<std::byte, zero_after_free_allocator<std::byte> >&, std::enable_if<((!is_Span<std::vector<std::byte, zero_after_free_allocator<std::byte> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<std::byte, zero_after_free_allocator<std::byte> >&>)()).data)())>::type (*) [], std::byte (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<std::byte, zero_after_free_allocator<std::byte> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte>::Span<std::array<std::byte, 20ul> >(std::array<std::byte, 20ul>&, std::enable_if<((!is_Span<std::array<std::byte, 20ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<std::byte, 20ul>&>)()).data)())>::type (*) [], std::byte (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<std::byte, 20ul>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte const>::Span<CKey>(CKey&, std::enable_if<((!is_Span<CKey>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<CKey&>)()).data)())>::type (*) [], std::byte const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<CKey&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<CKeyID>(CKeyID&, std::enable_if<((!is_Span<CKeyID>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<CKeyID&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<CKeyID&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char>::Span<std::vector<unsigned char, secure_allocator<unsigned char> > >(std::vector<unsigned char, secure_allocator<unsigned char> >&, std::enable_if<((!is_Span<std::vector<unsigned char, secure_allocator<unsigned char> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<unsigned char, secure_allocator<unsigned char> >&>)()).data)())>::type (*) [], unsigned char (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<unsigned char, secure_allocator<unsigned char> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte const>::Span<std::array<std::byte, 64ul> >(std::array<std::byte, 64ul>&, std::enable_if<((!is_Span<std::array<std::byte, 64ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<std::byte, 64ul>&>)()).data)())>::type (*) [], std::byte const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<std::byte, 64ul>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<prevector<35u, unsigned char, unsigned int, int> >(prevector<35u, unsigned char, unsigned int, int>&, std::enable_if<((!is_Span<prevector<35u, unsigned char, unsigned int, int> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<prevector<35u, unsigned char, unsigned int, int>&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<prevector<35u, unsigned char, unsigned int, int>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: descriptor.cpp:Span<std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > > >::Span<std::vector<std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > >, std::allocator<std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > > > > >(std::vector<std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > >, std::allocator<std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > > > >&, std::enable_if<((!is_Span<std::vector<std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > >, std::allocator<std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > > > > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > >, std::allocator<std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > > > >&>)()).data)())>::type (*) [], std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > > (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > >, std::allocator<std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > > > >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<miniscript::Node<unsigned int> const*>::Span<std::vector<miniscript::Node<unsigned int> const*, std::allocator<miniscript::Node<unsigned int> const*> > >(std::vector<miniscript::Node<unsigned int> const*, std::allocator<miniscript::Node<unsigned int> const*> >&, std::enable_if<((!is_Span<std::vector<miniscript::Node<unsigned int> const*, std::allocator<miniscript::Node<unsigned int> const*> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<miniscript::Node<unsigned int> const*, std::allocator<miniscript::Node<unsigned int> const*> >&>)()).data)())>::type (*) [], miniscript::Node<unsigned int> const* (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<miniscript::Node<unsigned int> const*, std::allocator<miniscript::Node<unsigned int> const*> >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > > >::Span<std::vector<std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > >, std::allocator<std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > > > > >(std::vector<std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > >, std::allocator<std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > > > >&, std::enable_if<((!is_Span<std::vector<std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > >, std::allocator<std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > > > > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > >, std::allocator<std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > > > >&>)()).data)())>::type (*) [], std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > > (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > >, std::allocator<std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > > > >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > > >::Span<std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > > > > >(std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > > > >&, std::enable_if<((!is_Span<std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > > > > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > > > >&>)()).data)())>::type (*) [], std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > > (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > >, std::allocator<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > > > >&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte>::Span<std::array<std::byte, 4096ul> >(std::array<std::byte, 4096ul>&, std::enable_if<((!is_Span<std::array<std::byte, 4096ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<std::byte, 4096ul>&>)()).data)())>::type (*) [], std::byte (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<std::byte, 4096ul>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Span<std::byte>::Span<std::array<std::byte, 64ul> >(std::array<std::byte, 64ul>&, std::enable_if<((!is_Span<std::array<std::byte, 64ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<std::byte, 64ul>&>)()).data)())>::type (*) [], std::byte (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<std::byte, 64ul>&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Line
Count
Source
165
3.67k
        : m_data(other.data()), m_size(other.size()){}
166
167
    template <typename V>
168
    constexpr Span(const V& other SPAN_ATTR_LIFETIMEBOUND,
169
        typename std::enable_if<!is_Span<V>::value &&
170
                                std::is_convertible<typename std::remove_pointer<decltype(std::declval<const V&>().data())>::type (*)[], C (*)[]>::value &&
171
                                std::is_convertible<decltype(std::declval<const V&>().size()), std::size_t>::value, std::nullptr_t>::type = nullptr)
172
1.01M
        : m_data(other.data()), m_size(other.size()){}
Span<unsigned char const>::Span<std::vector<unsigned char, std::allocator<unsigned char> > >(std::vector<unsigned char, std::allocator<unsigned char> > const&, std::enable_if<((!is_Span<std::vector<unsigned char, std::allocator<unsigned char> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<unsigned char, std::allocator<unsigned char> > const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<unsigned char, std::allocator<unsigned char> > const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Line
Count
Source
172
89.9k
        : m_data(other.data()), m_size(other.size()){}
Unexecuted instantiation: Span<unsigned char const>::Span<CScript>(CScript const&, std::enable_if<((!is_Span<CScript>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<CScript const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<CScript const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<uint256>(uint256 const&, std::enable_if<((!is_Span<uint256>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<uint256 const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<uint256 const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<char const>::Span<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::enable_if<((!is_Span<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>)()).data)())>::type (*) [], char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Span<std::byte const>::Span<std::array<std::byte, 32ul> >(std::array<std::byte, 32ul> const&, std::enable_if<((!is_Span<std::array<std::byte, 32ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<std::byte, 32ul> const&>)()).data)())>::type (*) [], std::byte const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<std::byte, 32ul> const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Line
Count
Source
172
9.17k
        : m_data(other.data()), m_size(other.size()){}
Unexecuted instantiation: Span<std::byte const>::Span<std::array<std::byte, 16ul> >(std::array<std::byte, 16ul> const&, std::enable_if<((!is_Span<std::array<std::byte, 16ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<std::byte, 16ul> const&>)()).data)())>::type (*) [], std::byte const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<std::byte, 16ul> const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Span<unsigned char const>::Span<std::array<unsigned char, 32ul> >(std::array<unsigned char, 32ul> const&, std::enable_if<((!is_Span<std::array<unsigned char, 32ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<unsigned char, 32ul> const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<unsigned char, 32ul> const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Line
Count
Source
172
857k
        : m_data(other.data()), m_size(other.size()){}
Span<unsigned char const>::Span<prevector<28u, unsigned char, unsigned int, int> >(prevector<28u, unsigned char, unsigned int, int> const&, std::enable_if<((!is_Span<prevector<28u, unsigned char, unsigned int, int> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<prevector<28u, unsigned char, unsigned int, int> const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<prevector<28u, unsigned char, unsigned int, int> const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Line
Count
Source
172
39.2k
        : m_data(other.data()), m_size(other.size()){}
Unexecuted instantiation: Span<std::byte const>::Span<std::vector<std::byte, std::allocator<std::byte> > >(std::vector<std::byte, std::allocator<std::byte> > const&, std::enable_if<((!is_Span<std::vector<std::byte, std::allocator<std::byte> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<std::byte, std::allocator<std::byte> > const&>)()).data)())>::type (*) [], std::byte const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<std::byte, std::allocator<std::byte> > const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<CPubKey>(CPubKey const&, std::enable_if<((!is_Span<CPubKey>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<CPubKey const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<CPubKey const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<uint160>(uint160 const&, std::enable_if<((!is_Span<uint160>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<uint160 const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<uint160 const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Span<unsigned char const>::Span<prevector<16u, unsigned char, unsigned int, int> >(prevector<16u, unsigned char, unsigned int, int> const&, std::enable_if<((!is_Span<prevector<16u, unsigned char, unsigned int, int> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<prevector<16u, unsigned char, unsigned int, int> const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<prevector<16u, unsigned char, unsigned int, int> const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Line
Count
Source
172
870
        : m_data(other.data()), m_size(other.size()){}
Span<unsigned char const>::Span<std::array<unsigned char, 4ul> >(std::array<unsigned char, 4ul> const&, std::enable_if<((!is_Span<std::array<unsigned char, 4ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<unsigned char, 4ul> const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<unsigned char, 4ul> const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Line
Count
Source
172
17.4k
        : m_data(other.data()), m_size(other.size()){}
Unexecuted instantiation: Span<unsigned char const>::Span<std::array<unsigned char, 5ul> >(std::array<unsigned char, 5ul> const&, std::enable_if<((!is_Span<std::array<unsigned char, 5ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<unsigned char, 5ul> const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<unsigned char, 5ul> const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<std::array<unsigned char, 20ul> >(std::array<unsigned char, 20ul> const&, std::enable_if<((!is_Span<std::array<unsigned char, 20ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<unsigned char, 20ul> const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<unsigned char, 20ul> const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<std::span<unsigned char const, 18446744073709551615ul> >(std::span<unsigned char const, 18446744073709551615ul> const&, std::enable_if<((!is_Span<std::span<unsigned char const, 18446744073709551615ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::span<unsigned char const, 18446744073709551615ul> const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::span<unsigned char const, 18446744073709551615ul> const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<XOnlyPubKey>(XOnlyPubKey const&, std::enable_if<((!is_Span<XOnlyPubKey>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<XOnlyPubKey const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<XOnlyPubKey const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte const>::Span<std::vector<std::byte, zero_after_free_allocator<std::byte> > >(std::vector<std::byte, zero_after_free_allocator<std::byte> > const&, std::enable_if<((!is_Span<std::vector<std::byte, zero_after_free_allocator<std::byte> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<std::byte, zero_after_free_allocator<std::byte> > const&>)()).data)())>::type (*) [], std::byte const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<std::byte, zero_after_free_allocator<std::byte> > const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<char const>::Span<leveldb::Slice>(leveldb::Slice const&, std::enable_if<((!is_Span<leveldb::Slice>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<leveldb::Slice const&>)()).data)())>::type (*) [], char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<leveldb::Slice const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte const>::Span<std::array<std::byte, 0ul> >(std::array<std::byte, 0ul> const&, std::enable_if<((!is_Span<std::array<std::byte, 0ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<std::byte, 0ul> const&>)()).data)())>::type (*) [], std::byte const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<std::byte, 0ul> const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<CNode* const>::Span<std::vector<CNode*, std::allocator<CNode*> > >(std::vector<CNode*, std::allocator<CNode*> > const&, std::enable_if<((!is_Span<std::vector<CNode*, std::allocator<CNode*> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<CNode*, std::allocator<CNode*> > const&>)()).data)())>::type (*) [], CNode* const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<CNode*, std::allocator<CNode*> > const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::byte const>::Span<std::array<std::byte, 8ul> >(std::array<std::byte, 8ul> const&, std::enable_if<((!is_Span<std::array<std::byte, 8ul> >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::array<std::byte, 8ul> const&>)()).data)())>::type (*) [], std::byte const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::array<std::byte, 8ul> const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<FeeFrac const>::Span<std::vector<FeeFrac, std::allocator<FeeFrac> > >(std::vector<FeeFrac, std::allocator<FeeFrac> > const&, std::enable_if<((!is_Span<std::vector<FeeFrac, std::allocator<FeeFrac> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<FeeFrac, std::allocator<FeeFrac> > const&>)()).data)())>::type (*) [], FeeFrac const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<FeeFrac, std::allocator<FeeFrac> > const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<CKeyID>(CKeyID const&, std::enable_if<((!is_Span<CKeyID>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<CKeyID const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<CKeyID const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<WitnessV0ScriptHash>(WitnessV0ScriptHash const&, std::enable_if<((!is_Span<WitnessV0ScriptHash>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<WitnessV0ScriptHash const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<WitnessV0ScriptHash const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<std::vector<unsigned char, secure_allocator<unsigned char> > >(std::vector<unsigned char, secure_allocator<unsigned char> > const&, std::enable_if<((!is_Span<std::vector<unsigned char, secure_allocator<unsigned char> > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<unsigned char, secure_allocator<unsigned char> > const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<unsigned char, secure_allocator<unsigned char> > const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<PKHash>(PKHash const&, std::enable_if<((!is_Span<PKHash>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<PKHash const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<PKHash const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<WitnessV0KeyHash>(WitnessV0KeyHash const&, std::enable_if<((!is_Span<WitnessV0KeyHash>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<WitnessV0KeyHash const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<WitnessV0KeyHash const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<ScriptHash>(ScriptHash const&, std::enable_if<((!is_Span<ScriptHash>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<ScriptHash const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<ScriptHash const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<std::vector<unsigned char, std::allocator<unsigned char> > const>::Span<std::vector<std::vector<unsigned char, std::allocator<unsigned char> >, std::allocator<std::vector<unsigned char, std::allocator<unsigned char> > > > >(std::vector<std::vector<unsigned char, std::allocator<unsigned char> >, std::allocator<std::vector<unsigned char, std::allocator<unsigned char> > > > const&, std::enable_if<((!is_Span<std::vector<std::vector<unsigned char, std::allocator<unsigned char> >, std::allocator<std::vector<unsigned char, std::allocator<unsigned char> > > > >::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<std::vector<std::vector<unsigned char, std::allocator<unsigned char> >, std::allocator<std::vector<unsigned char, std::allocator<unsigned char> > > > const&>)()).data)())>::type (*) [], std::vector<unsigned char, std::allocator<unsigned char> > const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<std::vector<std::vector<unsigned char, std::allocator<unsigned char> >, std::allocator<std::vector<unsigned char, std::allocator<unsigned char> > > > const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
Unexecuted instantiation: Span<unsigned char const>::Span<WitnessV1Taproot>(WitnessV1Taproot const&, std::enable_if<((!is_Span<WitnessV1Taproot>::value)&&std::is_convertible<std::remove_pointer<decltype ((((std::declval<WitnessV1Taproot const&>)()).data)())>::type (*) [], unsigned char const (*) []>::value)&&std::is_convertible<decltype ((((std::declval<WitnessV1Taproot const&>)()).size)()), unsigned long>::value, decltype(nullptr)>::type)
173
174
7.27M
    constexpr C* data() const noexcept { return m_data; }
Span<unsigned char const>::data() const
Line
Count
Source
174
1.00M
    constexpr C* data() const noexcept { return m_data; }
Span<std::byte const>::data() const
Line
Count
Source
174
2.92M
    constexpr C* data() const noexcept { return m_data; }
Span<std::byte>::data() const
Line
Count
Source
174
592k
    constexpr C* data() const noexcept { return m_data; }
Span<unsigned char>::data() const
Line
Count
Source
174
545k
    constexpr C* data() const noexcept { return m_data; }
Span<unsigned int>::data() const
Line
Count
Source
174
2.09M
    constexpr C* data() const noexcept { return m_data; }
Span<char const>::data() const
Line
Count
Source
174
17.4k
    constexpr C* data() const noexcept { return m_data; }
Unexecuted instantiation: Span<unsigned short>::data() const
Span<unsigned long>::data() const
Line
Count
Source
174
72.5k
    constexpr C* data() const noexcept { return m_data; }
Span<char>::data() const
Line
Count
Source
174
13.5k
    constexpr C* data() const noexcept { return m_data; }
Unexecuted instantiation: Span<std::vector<unsigned char, std::allocator<unsigned char> > const>::data() const
175
34.3k
    constexpr C* begin() const noexcept { return m_data; }
Unexecuted instantiation: Span<char const>::begin() const
Span<unsigned char const>::begin() const
Line
Count
Source
175
3.48k
    constexpr C* begin() const noexcept { return m_data; }
Span<std::byte const>::begin() const
Line
Count
Source
175
23.6k
    constexpr C* begin() const noexcept { return m_data; }
Unexecuted instantiation: Span<unsigned int const>::begin() const
Unexecuted instantiation: Span<unsigned int>::begin() const
Unexecuted instantiation: Span<FeeFrac const>::begin() const
Unexecuted instantiation: miniscript.cpp:Span<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > > >::begin() const
Unexecuted instantiation: Span<int>::begin() const
Unexecuted instantiation: Span<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::begin() const
Unexecuted instantiation: miniscript.cpp:Span<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > > >::begin() const
Unexecuted instantiation: miniscript.cpp:Span<std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > > >::begin() const
Span<std::byte>::begin() const
Line
Count
Source
175
7.23k
    constexpr C* begin() const noexcept { return m_data; }
Unexecuted instantiation: Span<CNode* const>::begin() const
Unexecuted instantiation: Span<CRPCCommand const>::begin() const
Unexecuted instantiation: Span<std::vector<unsigned char, std::allocator<unsigned char> > const>::begin() const
Unexecuted instantiation: descriptor.cpp:Span<std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > > >::begin() const
Unexecuted instantiation: Span<miniscript::Node<unsigned int> const*>::begin() const
Unexecuted instantiation: Span<std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > > >::begin() const
Unexecuted instantiation: Span<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > > >::begin() const
176
658k
    constexpr C* end() const noexcept { return m_data + m_size; }
Unexecuted instantiation: Span<char const>::end() const
Span<unsigned char const>::end() const
Line
Count
Source
176
870
    constexpr C* end() const noexcept { return m_data + m_size; }
Span<std::byte const>::end() const
Line
Count
Source
176
657k
    constexpr C* end() const noexcept { return m_data + m_size; }
Unexecuted instantiation: Span<unsigned int const>::end() const
Unexecuted instantiation: Span<unsigned int>::end() const
Unexecuted instantiation: Span<FeeFrac const>::end() const
Unexecuted instantiation: miniscript.cpp:Span<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > > >::end() const
Unexecuted instantiation: Span<int>::end() const
Unexecuted instantiation: Span<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::end() const
Unexecuted instantiation: miniscript.cpp:Span<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > > >::end() const
Unexecuted instantiation: miniscript.cpp:Span<std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > > >::end() const
Unexecuted instantiation: Span<std::byte>::end() const
Unexecuted instantiation: Span<CNode* const>::end() const
Unexecuted instantiation: Span<CRPCCommand const>::end() const
Unexecuted instantiation: Span<std::vector<unsigned char, std::allocator<unsigned char> > const>::end() const
Unexecuted instantiation: descriptor.cpp:Span<std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > > >::end() const
Unexecuted instantiation: Span<miniscript::Node<unsigned int> const*>::end() const
Unexecuted instantiation: Span<std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > > >::end() const
Unexecuted instantiation: Span<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > > >::end() const
177
    CONSTEXPR_IF_NOT_DEBUG C& front() const noexcept
178
0
    {
179
0
        ASSERT_IF_DEBUG(size() > 0);
180
0
        return m_data[0];
181
0
    }
Unexecuted instantiation: Span<unsigned int const>::front() const
Unexecuted instantiation: Span<std::vector<unsigned char, std::allocator<unsigned char> > const>::front() const
Unexecuted instantiation: Span<unsigned char const>::front() const
182
    CONSTEXPR_IF_NOT_DEBUG C& back() const noexcept
183
0
    {
184
0
        ASSERT_IF_DEBUG(size() > 0);
185
0
        return m_data[m_size - 1];
186
0
    }
187
6.41M
    constexpr std::size_t size() const noexcept { return m_size; }
Span<std::byte const>::size() const
Line
Count
Source
187
4.30M
    constexpr std::size_t size() const noexcept { return m_size; }
Span<std::byte>::size() const
Line
Count
Source
187
1.80M
    constexpr std::size_t size() const noexcept { return m_size; }
Unexecuted instantiation: Span<char const>::size() const
Span<unsigned char const>::size() const
Line
Count
Source
187
266k
    constexpr std::size_t size() const noexcept { return m_size; }
Span<unsigned char>::size() const
Line
Count
Source
187
33.3k
    constexpr std::size_t size() const noexcept { return m_size; }
Unexecuted instantiation: Span<unsigned int const>::size() const
Unexecuted instantiation: Span<unsigned int>::size() const
Unexecuted instantiation: Span<FeeFrac const>::size() const
Unexecuted instantiation: Span<CScript>::size() const
Unexecuted instantiation: Span<miniscript::internal::InputResult>::size() const
Unexecuted instantiation: Span<int>::size() const
Unexecuted instantiation: Span<std::vector<unsigned char, std::allocator<unsigned char> > const>::size() const
Unexecuted instantiation: Span<CScript const>::size() const
188
3.64M
    constexpr std::size_t size_bytes() const noexcept { return sizeof(C) * m_size; }
Span<unsigned char const>::size_bytes() const
Line
Count
Source
188
935k
    constexpr std::size_t size_bytes() const noexcept { return sizeof(C) * m_size; }
Span<unsigned char>::size_bytes() const
Line
Count
Source
188
512k
    constexpr std::size_t size_bytes() const noexcept { return sizeof(C) * m_size; }
Span<unsigned int>::size_bytes() const
Line
Count
Source
188
2.09M
    constexpr std::size_t size_bytes() const noexcept { return sizeof(C) * m_size; }
Unexecuted instantiation: Span<std::byte>::size_bytes() const
Unexecuted instantiation: Span<unsigned short>::size_bytes() const
Span<unsigned long>::size_bytes() const
Line
Count
Source
188
72.5k
    constexpr std::size_t size_bytes() const noexcept { return sizeof(C) * m_size; }
Span<char>::size_bytes() const
Line
Count
Source
188
13.5k
    constexpr std::size_t size_bytes() const noexcept { return sizeof(C) * m_size; }
Span<char const>::size_bytes() const
Line
Count
Source
188
17.4k
    constexpr std::size_t size_bytes() const noexcept { return sizeof(C) * m_size; }
Unexecuted instantiation: Span<std::byte const>::size_bytes() const
189
88.5k
    constexpr bool empty() const noexcept { return size() == 0; }
Span<unsigned char const>::empty() const
Line
Count
Source
189
76.4k
    constexpr bool empty() const noexcept { return size() == 0; }
Unexecuted instantiation: Span<unsigned int const>::empty() const
Unexecuted instantiation: Span<char const>::empty() const
Span<std::byte>::empty() const
Line
Count
Source
189
12.1k
    constexpr bool empty() const noexcept { return size() == 0; }
Unexecuted instantiation: Span<std::byte const>::empty() const
190
    CONSTEXPR_IF_NOT_DEBUG C& operator[](std::size_t pos) const noexcept
191
6.96k
    {
192
6.96k
        ASSERT_IF_DEBUG(size() > pos);
193
6.96k
        return m_data[pos];
194
6.96k
    }
Unexecuted instantiation: Span<std::byte>::operator[](unsigned long) const
Unexecuted instantiation: Span<std::byte const>::operator[](unsigned long) const
Unexecuted instantiation: Span<unsigned int>::operator[](unsigned long) const
Unexecuted instantiation: Span<FeeFrac const>::operator[](unsigned long) const
Unexecuted instantiation: Span<CScript>::operator[](unsigned long) const
Unexecuted instantiation: Span<miniscript::internal::InputResult>::operator[](unsigned long) const
Unexecuted instantiation: Span<int>::operator[](unsigned long) const
Unexecuted instantiation: Span<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::operator[](unsigned long) const
Unexecuted instantiation: Span<char const>::operator[](unsigned long) const
Span<unsigned char const>::operator[](unsigned long) const
Line
Count
Source
191
6.96k
    {
192
6.96k
        ASSERT_IF_DEBUG(size() > pos);
193
6.96k
        return m_data[pos];
194
6.96k
    }
Unexecuted instantiation: Span<std::vector<unsigned char, std::allocator<unsigned char> > const>::operator[](unsigned long) const
Unexecuted instantiation: Span<CScript const>::operator[](unsigned long) const
195
    CONSTEXPR_IF_NOT_DEBUG Span<C> subspan(std::size_t offset) const noexcept
196
102k
    {
197
102k
        ASSERT_IF_DEBUG(size() >= offset);
198
102k
        return Span<C>(m_data + offset, m_size - offset);
199
102k
    }
Span<unsigned char const>::subspan(unsigned long) const
Line
Count
Source
196
98.6k
    {
197
98.6k
        ASSERT_IF_DEBUG(size() >= offset);
198
98.6k
        return Span<C>(m_data + offset, m_size - offset);
199
98.6k
    }
Span<std::byte>::subspan(unsigned long) const
Line
Count
Source
196
3.55k
    {
197
3.55k
        ASSERT_IF_DEBUG(size() >= offset);
198
3.55k
        return Span<C>(m_data + offset, m_size - offset);
199
3.55k
    }
Unexecuted instantiation: Span<unsigned char>::subspan(unsigned long) const
Unexecuted instantiation: Span<unsigned int const>::subspan(unsigned long) const
Unexecuted instantiation: Span<char const>::subspan(unsigned long) const
Unexecuted instantiation: Span<std::byte const>::subspan(unsigned long) const
200
    CONSTEXPR_IF_NOT_DEBUG Span<C> subspan(std::size_t offset, std::size_t count) const noexcept
201
0
    {
202
0
        ASSERT_IF_DEBUG(size() >= offset + count);
203
0
        return Span<C>(m_data + offset, count);
204
0
    }
Unexecuted instantiation: Span<unsigned char const>::subspan(unsigned long, unsigned long) const
Unexecuted instantiation: Span<std::byte>::subspan(unsigned long, unsigned long) const
Unexecuted instantiation: Span<char const>::subspan(unsigned long, unsigned long) const
Unexecuted instantiation: Span<std::byte const>::subspan(unsigned long, unsigned long) const
205
    CONSTEXPR_IF_NOT_DEBUG Span<C> first(std::size_t count) const noexcept
206
14.4k
    {
207
14.4k
        ASSERT_IF_DEBUG(size() >= count);
208
14.4k
        return Span<C>(m_data, count);
209
14.4k
    }
Span<std::byte const>::first(unsigned long) const
Line
Count
Source
206
870
    {
207
870
        ASSERT_IF_DEBUG(size() >= count);
208
870
        return Span<C>(m_data, count);
209
870
    }
Span<std::byte>::first(unsigned long) const
Line
Count
Source
206
870
    {
207
870
        ASSERT_IF_DEBUG(size() >= count);
208
870
        return Span<C>(m_data, count);
209
870
    }
Span<unsigned char const>::first(unsigned long) const
Line
Count
Source
206
12.6k
    {
207
12.6k
        ASSERT_IF_DEBUG(size() >= count);
208
12.6k
        return Span<C>(m_data, count);
209
12.6k
    }
Unexecuted instantiation: Span<unsigned char>::first(unsigned long) const
Unexecuted instantiation: Span<char const>::first(unsigned long) const
210
    CONSTEXPR_IF_NOT_DEBUG Span<C> last(std::size_t count) const noexcept
211
4.35k
    {
212
4.35k
         ASSERT_IF_DEBUG(size() >= count);
213
4.35k
         return Span<C>(m_data + m_size - count, count);
214
4.35k
    }
Span<std::byte const>::last(unsigned long) const
Line
Count
Source
211
3.48k
    {
212
3.48k
         ASSERT_IF_DEBUG(size() >= count);
213
3.48k
         return Span<C>(m_data + m_size - count, count);
214
3.48k
    }
Span<std::byte>::last(unsigned long) const
Line
Count
Source
211
870
    {
212
870
         ASSERT_IF_DEBUG(size() >= count);
213
870
         return Span<C>(m_data + m_size - count, count);
214
870
    }
Unexecuted instantiation: Span<unsigned char>::last(unsigned long) const
Unexecuted instantiation: Span<CScript>::last(unsigned long) const
Unexecuted instantiation: miniscript.cpp:Span<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::ParserContext>((anonymous namespace)::ParserContext const&) const::Comp, std::allocator<CPubKey> > > >::last(unsigned long) const
Unexecuted instantiation: Span<miniscript::internal::InputResult>::last(unsigned long) const
Unexecuted instantiation: Span<int>::last(unsigned long) const
Unexecuted instantiation: Span<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::last(unsigned long) const
Unexecuted instantiation: miniscript.cpp:Span<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<(anonymous namespace)::KeyComparator>((anonymous namespace)::KeyComparator const&) const::Comp, std::allocator<CPubKey> > > >::last(unsigned long) const
Unexecuted instantiation: miniscript.cpp:Span<std::optional<std::set<(anonymous namespace)::ScriptParserContext::Key, miniscript::Node<(anonymous namespace)::ScriptParserContext::Key>::DuplicateKeyCheck<(anonymous namespace)::ScriptParserContext>((anonymous namespace)::ScriptParserContext const&) const::Comp, std::allocator<(anonymous namespace)::ScriptParserContext::Key> > > >::last(unsigned long) const
Unexecuted instantiation: Span<char const>::last(unsigned long) const
Unexecuted instantiation: Span<unsigned char const>::last(unsigned long) const
Unexecuted instantiation: descriptor.cpp:Span<std::optional<std::set<unsigned int, miniscript::Node<unsigned int>::DuplicateKeyCheck<(anonymous namespace)::KeyParser>((anonymous namespace)::KeyParser const&) const::Comp, std::allocator<unsigned int> > > >::last(unsigned long) const
Unexecuted instantiation: Span<miniscript::Node<unsigned int> const*>::last(unsigned long) const
Unexecuted instantiation: Span<std::optional<std::set<XOnlyPubKey, miniscript::Node<XOnlyPubKey>::DuplicateKeyCheck<TapSatisfier>(TapSatisfier const&) const::Comp, std::allocator<XOnlyPubKey> > > >::last(unsigned long) const
Unexecuted instantiation: Span<std::optional<std::set<CPubKey, miniscript::Node<CPubKey>::DuplicateKeyCheck<WshSatisfier>(WshSatisfier const&) const::Comp, std::allocator<CPubKey> > > >::last(unsigned long) const
215
216
0
    friend constexpr bool operator==(const Span& a, const Span& b) noexcept { return a.size() == b.size() && std::equal(a.begin(), a.end(), b.begin()); }
Unexecuted instantiation: operator==(Span<std::byte const> const&, Span<std::byte const> const&)
Unexecuted instantiation: operator==(Span<unsigned char const> const&, Span<unsigned char const> const&)
Unexecuted instantiation: operator==(Span<std::byte> const&, Span<std::byte> const&)
Unexecuted instantiation: operator==(Span<char const> const&, Span<char const> const&)
  Branch (216:86): [True: 0, False: 0]
  Branch (216:110): [True: 0, False: 0]
  Branch (216:86): [True: 0, False: 0]
  Branch (216:110): [True: 0, False: 0]
  Branch (216:86): [True: 0, False: 0]
  Branch (216:110): [True: 0, False: 0]
  Branch (216:86): [True: 0, False: 0]
  Branch (216:110): [True: 0, False: 0]
217
0
    friend constexpr bool operator!=(const Span& a, const Span& b) noexcept { return !(a == b); }
Unexecuted instantiation: operator!=(Span<char const> const&, Span<char const> const&)
Unexecuted instantiation: operator!=(Span<unsigned char const> const&, Span<unsigned char const> const&)
218
0
    friend constexpr bool operator<(const Span& a, const Span& b) noexcept { return std::lexicographical_compare(a.begin(), a.end(), b.begin(), b.end()); }
Unexecuted instantiation: operator<(Span<char const> const&, Span<char const> const&)
Unexecuted instantiation: operator<(Span<std::byte const> const&, Span<std::byte const> const&)
219
0
    friend constexpr bool operator<=(const Span& a, const Span& b) noexcept { return !(b < a); }
220
0
    friend constexpr bool operator>(const Span& a, const Span& b) noexcept { return (b < a); }
221
0
    friend constexpr bool operator>=(const Span& a, const Span& b) noexcept { return !(a < b); }
222
223
    template <typename O> friend class Span;
224
};
225
226
// Return result of calling .data() method on type T. This is used to be able to
227
// write template deduction guides for the single-parameter Span constructor
228
// below that will work if the value that is passed has a .data() method, and if
229
// the data method does not return a void pointer.
230
//
231
// It is important to check for the void type specifically below, so the
232
// deduction guides can be used in SFINAE contexts to check whether objects can
233
// be converted to spans. If the deduction guides did not explicitly check for
234
// void, and an object was passed that returned void* from data (like
235
// std::vector<bool>), the template deduction would succeed, but the Span<void>
236
// object instantiation would fail, resulting in a hard error, rather than a
237
// SFINAE error.
238
// https://stackoverflow.com/questions/68759148/sfinae-to-detect-the-explicitness-of-a-ctad-deduction-guide
239
// https://stackoverflow.com/questions/16568986/what-happens-when-you-call-data-on-a-stdvectorbool
240
template<typename T>
241
using DataResult = std::remove_pointer_t<decltype(std::declval<T&>().data())>;
242
243
// Deduction guides for Span
244
// For the pointer/size based and iterator based constructor:
245
template <typename T, typename EndOrSize> Span(T*, EndOrSize) -> Span<T>;
246
// For the array constructor:
247
template <typename T, std::size_t N> Span(T (&)[N]) -> Span<T>;
248
// For the temporaries/rvalue references constructor, only supporting const output.
249
template <typename T> Span(T&&) -> Span<std::enable_if_t<!std::is_lvalue_reference_v<T> && !std::is_void_v<DataResult<T&&>>, const DataResult<T&&>>>;
250
// For (lvalue) references, supporting mutable output.
251
template <typename T> Span(T&) -> Span<std::enable_if_t<!std::is_void_v<DataResult<T&>>, DataResult<T&>>>;
252
253
/** Pop the last element off a span, and return a reference to that element. */
254
template <typename T>
255
T& SpanPopBack(Span<T>& span)
256
0
{
257
0
    size_t size = span.size();
258
0
    ASSERT_IF_DEBUG(size > 0);
259
0
    T& back = span[size - 1];
260
0
    span = Span<T>(span.data(), size - 1);
261
0
    return back;
262
0
}
Unexecuted instantiation: std::vector<unsigned char, std::allocator<unsigned char> > const& SpanPopBack<std::vector<unsigned char, std::allocator<unsigned char> > const>(Span<std::vector<unsigned char, std::allocator<unsigned char> > const>&)
Unexecuted instantiation: unsigned char const& SpanPopBack<unsigned char const>(Span<unsigned char const>&)
263
264
// From C++20 as_bytes and as_writeable_bytes
265
template <typename T>
266
Span<const std::byte> AsBytes(Span<T> s) noexcept
267
3.05M
{
268
3.05M
    return {reinterpret_cast<const std::byte*>(s.data()), s.size_bytes()};
269
3.05M
}
Span<std::byte const> AsBytes<unsigned char const>(Span<unsigned char const>)
Line
Count
Source
267
935k
{
268
935k
    return {reinterpret_cast<const std::byte*>(s.data()), s.size_bytes()};
269
935k
}
Span<std::byte const> AsBytes<unsigned int>(Span<unsigned int>)
Line
Count
Source
267
1.80M
{
268
1.80M
    return {reinterpret_cast<const std::byte*>(s.data()), s.size_bytes()};
269
1.80M
}
Span<std::byte const> AsBytes<unsigned char>(Span<unsigned char>)
Line
Count
Source
267
240k
{
268
240k
    return {reinterpret_cast<const std::byte*>(s.data()), s.size_bytes()};
269
240k
}
Unexecuted instantiation: Span<std::byte const> AsBytes<unsigned short>(Span<unsigned short>)
Span<std::byte const> AsBytes<unsigned long>(Span<unsigned long>)
Line
Count
Source
267
58.8k
{
268
58.8k
    return {reinterpret_cast<const std::byte*>(s.data()), s.size_bytes()};
269
58.8k
}
Span<std::byte const> AsBytes<char const>(Span<char const>)
Line
Count
Source
267
17.4k
{
268
17.4k
    return {reinterpret_cast<const std::byte*>(s.data()), s.size_bytes()};
269
17.4k
}
Unexecuted instantiation: Span<std::byte const> AsBytes<std::byte>(Span<std::byte>)
Unexecuted instantiation: Span<std::byte const> AsBytes<char>(Span<char>)
Unexecuted instantiation: Span<std::byte const> AsBytes<std::byte const>(Span<std::byte const>)
270
template <typename T>
271
Span<std::byte> AsWritableBytes(Span<T> s) noexcept
272
591k
{
273
591k
    return {reinterpret_cast<std::byte*>(s.data()), s.size_bytes()};
274
591k
}
Span<std::byte> AsWritableBytes<unsigned char>(Span<unsigned char>)
Line
Count
Source
272
271k
{
273
271k
    return {reinterpret_cast<std::byte*>(s.data()), s.size_bytes()};
274
271k
}
Span<std::byte> AsWritableBytes<unsigned int>(Span<unsigned int>)
Line
Count
Source
272
292k
{
273
292k
    return {reinterpret_cast<std::byte*>(s.data()), s.size_bytes()};
274
292k
}
Unexecuted instantiation: Span<std::byte> AsWritableBytes<std::byte>(Span<std::byte>)
Unexecuted instantiation: Span<std::byte> AsWritableBytes<unsigned short>(Span<unsigned short>)
Span<std::byte> AsWritableBytes<unsigned long>(Span<unsigned long>)
Line
Count
Source
272
13.7k
{
273
13.7k
    return {reinterpret_cast<std::byte*>(s.data()), s.size_bytes()};
274
13.7k
}
Span<std::byte> AsWritableBytes<char>(Span<char>)
Line
Count
Source
272
13.5k
{
273
13.5k
    return {reinterpret_cast<std::byte*>(s.data()), s.size_bytes()};
274
13.5k
}
275
276
template <typename V>
277
Span<const std::byte> MakeByteSpan(V&& v) noexcept
278
97.4k
{
279
97.4k
    return AsBytes(Span{std::forward<V>(v)});
280
97.4k
}
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<std::vector<unsigned char, std::allocator<unsigned char> > const&>(std::vector<unsigned char, std::allocator<unsigned char> > const&)
Span<std::byte const> MakeByteSpan<prevector<28u, unsigned char, unsigned int, int> const&>(prevector<28u, unsigned char, unsigned int, int> const&)
Line
Count
Source
278
39.2k
{
279
39.2k
    return AsBytes(Span{std::forward<V>(v)});
280
39.2k
}
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
Span<std::byte const> MakeByteSpan<unsigned char const (&) [4]>(unsigned char const (&) [4])
Line
Count
Source
278
17.4k
{
279
17.4k
    return AsBytes(Span{std::forward<V>(v)});
280
17.4k
}
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<unsigned char const (&) [5]>(unsigned char const (&) [5])
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<unsigned char const (&) [78]>(unsigned char const (&) [78])
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<prevector<16u, unsigned char, unsigned int, int> const&>(prevector<16u, unsigned char, unsigned int, int> const&)
Span<std::byte const> MakeByteSpan<unsigned char const (&) [16]>(unsigned char const (&) [16])
Line
Count
Source
278
3.48k
{
279
3.48k
    return AsBytes(Span{std::forward<V>(v)});
280
3.48k
}
Span<std::byte const> MakeByteSpan<std::array<unsigned char, 4ul> const&>(std::array<unsigned char, 4ul> const&)
Line
Count
Source
278
17.4k
{
279
17.4k
    return AsBytes(Span{std::forward<V>(v)});
280
17.4k
}
Span<std::byte const> MakeByteSpan<char const (&) [12]>(char const (&) [12])
Line
Count
Source
278
17.4k
{
279
17.4k
    return AsBytes(Span{std::forward<V>(v)});
280
17.4k
}
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<std::array<unsigned char, 5ul> const&>(std::array<unsigned char, 5ul> const&)
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<DataStream&>(DataStream&)
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<std::vector<unsigned char, std::allocator<unsigned char> >&>(std::vector<unsigned char, std::allocator<unsigned char> >&)
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<leveldb::Slice>(leveldb::Slice&&)
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<uint256>(uint256&&)
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<std::array<std::byte, 8ul> const&>(std::array<std::byte, 8ul> const&)
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<std::vector<std::byte, std::allocator<std::byte> > const&>(std::vector<std::byte, std::allocator<std::byte> > const&)
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<std::vector<unsigned char, secure_allocator<unsigned char> > const&>(std::vector<unsigned char, secure_allocator<unsigned char> > const&)
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<uint256 const&>(uint256 const&)
Span<std::byte const> MakeByteSpan<uint256&>(uint256&)
Line
Count
Source
278
2.33k
{
279
2.33k
    return AsBytes(Span{std::forward<V>(v)});
280
2.33k
}
Unexecuted instantiation: Span<std::byte const> MakeByteSpan<unsigned char const (&) [384]>(unsigned char const (&) [384])
281
template <typename V>
282
Span<std::byte> MakeWritableByteSpan(V&& v) noexcept
283
171k
{
284
171k
    return AsWritableBytes(Span{std::forward<V>(v)});
285
171k
}
Span<std::byte> MakeWritableByteSpan<std::array<unsigned char, 32ul>&>(std::array<unsigned char, 32ul>&)
Line
Count
Source
283
129k
{
284
129k
    return AsWritableBytes(Span{std::forward<V>(v)});
285
129k
}
Unexecuted instantiation: Span<std::byte> MakeWritableByteSpan<DataStream&>(DataStream&)
Unexecuted instantiation: Span<std::byte> MakeWritableByteSpan<unsigned char (&) [5]>(unsigned char (&) [5])
Span<std::byte> MakeWritableByteSpan<unsigned char (&) [4]>(unsigned char (&) [4])
Line
Count
Source
283
13.5k
{
284
13.5k
    return AsWritableBytes(Span{std::forward<V>(v)});
285
13.5k
}
Unexecuted instantiation: Span<std::byte> MakeWritableByteSpan<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)
Unexecuted instantiation: Span<std::byte> MakeWritableByteSpan<std::vector<std::byte, std::allocator<std::byte> >&>(std::vector<std::byte, std::allocator<std::byte> >&)
Unexecuted instantiation: Span<std::byte> MakeWritableByteSpan<std::vector<unsigned char, std::allocator<unsigned char> >&>(std::vector<unsigned char, std::allocator<unsigned char> >&)
Span<std::byte> MakeWritableByteSpan<unsigned char (&) [16]>(unsigned char (&) [16])
Line
Count
Source
283
870
{
284
870
    return AsWritableBytes(Span{std::forward<V>(v)});
285
870
}
Span<std::byte> MakeWritableByteSpan<std::array<unsigned char, 4ul>&>(std::array<unsigned char, 4ul>&)
Line
Count
Source
283
13.5k
{
284
13.5k
    return AsWritableBytes(Span{std::forward<V>(v)});
285
13.5k
}
Span<std::byte> MakeWritableByteSpan<char (&) [12]>(char (&) [12])
Line
Count
Source
283
13.5k
{
284
13.5k
    return AsWritableBytes(Span{std::forward<V>(v)});
285
13.5k
}
Unexecuted instantiation: Span<std::byte> MakeWritableByteSpan<std::array<unsigned char, 5ul>&>(std::array<unsigned char, 5ul>&)
Unexecuted instantiation: Span<std::byte> MakeWritableByteSpan<std::array<unsigned char, 20ul>&>(std::array<unsigned char, 20ul>&)
Unexecuted instantiation: Span<std::byte> MakeWritableByteSpan<uint256&>(uint256&)
Unexecuted instantiation: Span<std::byte> MakeWritableByteSpan<std::array<std::byte, 8ul>&>(std::array<std::byte, 8ul>&)
Unexecuted instantiation: Span<std::byte> MakeWritableByteSpan<std::array<std::byte, 20ul>&>(std::array<std::byte, 20ul>&)
Unexecuted instantiation: Span<std::byte> MakeWritableByteSpan<char (&) [368]>(char (&) [368])
Unexecuted instantiation: Span<std::byte> MakeWritableByteSpan<unsigned char (&) [20]>(unsigned char (&) [20])
Unexecuted instantiation: Span<std::byte> MakeWritableByteSpan<unsigned char (&) [384]>(unsigned char (&) [384])
286
287
// Helper functions to safely cast basic byte pointers to unsigned char pointers.
288
0
inline unsigned char* UCharCast(char* c) { return reinterpret_cast<unsigned char*>(c); }
289
0
inline unsigned char* UCharCast(unsigned char* c) { return c; }
290
0
inline unsigned char* UCharCast(signed char* c) { return reinterpret_cast<unsigned char*>(c); }
291
7.40k
inline unsigned char* UCharCast(std::byte* c) { return reinterpret_cast<unsigned char*>(c); }
292
0
inline const unsigned char* UCharCast(const char* c) { return reinterpret_cast<const unsigned char*>(c); }
293
17.4k
inline const unsigned char* UCharCast(const unsigned char* c) { return c; }
294
0
inline const unsigned char* UCharCast(const signed char* c) { return reinterpret_cast<const unsigned char*>(c); }
295
3.55M
inline const unsigned char* UCharCast(const std::byte* c) { return reinterpret_cast<const unsigned char*>(c); }
296
// Helper concept for the basic byte types.
297
template <typename B>
298
concept BasicByte = requires { UCharCast(std::span<B>{}.data()); };
299
300
// Helper function to safely convert a Span to a Span<[const] unsigned char>.
301
17.4k
template <typename T> constexpr auto UCharSpanCast(Span<T> s) -> Span<typename std::remove_pointer<decltype(UCharCast(s.data()))>::type> { return {UCharCast(s.data()), s.size()}; }
Unexecuted instantiation: Span<std::remove_pointer<decltype (UCharCast(({parm#1}.data)()))>::type> UCharSpanCast<char const>(Span<char const>)
Unexecuted instantiation: Span<std::remove_pointer<decltype (UCharCast(({parm#1}.data)()))>::type> UCharSpanCast<std::byte const>(Span<std::byte const>)
Span<std::remove_pointer<decltype (UCharCast(({parm#1}.data)()))>::type> UCharSpanCast<unsigned char const>(Span<unsigned char const>)
Line
Count
Source
301
17.4k
template <typename T> constexpr auto UCharSpanCast(Span<T> s) -> Span<typename std::remove_pointer<decltype(UCharCast(s.data()))>::type> { return {UCharCast(s.data()), s.size()}; }
Unexecuted instantiation: Span<std::remove_pointer<decltype (UCharCast(({parm#1}.data)()))>::type> UCharSpanCast<std::byte>(Span<std::byte>)
Unexecuted instantiation: Span<std::remove_pointer<decltype (UCharCast(({parm#1}.data)()))>::type> UCharSpanCast<unsigned char>(Span<unsigned char>)
302
303
/** Like the Span constructor, but for (const) unsigned char member types only. Only works for (un)signed char containers. */
304
17.4k
template <typename V> constexpr auto MakeUCharSpan(V&& v) -> decltype(UCharSpanCast(Span{std::forward<V>(v)})) { return UCharSpanCast(Span{std::forward<V>(v)}); }
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<Span<char const> const&>)({parm#1})})) MakeUCharSpan<Span<char const> const&>(Span<char const> const&)
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<Span<std::byte const> const&>)({parm#1})})) MakeUCharSpan<Span<std::byte const> const&>(Span<std::byte const> const&)
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<Span<std::byte const>&>)({parm#1})})) MakeUCharSpan<Span<std::byte const>&>(Span<std::byte const>&)
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<std::basic_string_view<char, std::char_traits<char> >&>)({parm#1})})) MakeUCharSpan<std::basic_string_view<char, std::char_traits<char> >&>(std::basic_string_view<char, std::char_traits<char> >&)
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<Span<unsigned char const> const&>)({parm#1})})) MakeUCharSpan<Span<unsigned char const> const&>(Span<unsigned char const> const&)
decltype (UCharSpanCast(Span{(std::forward<std::vector<unsigned char, std::allocator<unsigned char> > const&>)({parm#1})})) MakeUCharSpan<std::vector<unsigned char, std::allocator<unsigned char> > const&>(std::vector<unsigned char, std::allocator<unsigned char> > const&)
Line
Count
Source
304
17.4k
template <typename V> constexpr auto MakeUCharSpan(V&& v) -> decltype(UCharSpanCast(Span{std::forward<V>(v)})) { return UCharSpanCast(Span{std::forward<V>(v)}); }
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<std::span<unsigned char const, 18446744073709551615ul> const&>)({parm#1})})) MakeUCharSpan<std::span<unsigned char const, 18446744073709551615ul> const&>(std::span<unsigned char const, 18446744073709551615ul> const&)
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<XOnlyPubKey const&>)({parm#1})})) MakeUCharSpan<XOnlyPubKey const&>(XOnlyPubKey const&)
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<CPubKey const&>)({parm#1})})) MakeUCharSpan<CPubKey const&>(CPubKey const&)
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)({parm#1})})) MakeUCharSpan<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<uint256 const&>)({parm#1})})) MakeUCharSpan<uint256 const&>(uint256 const&)
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<DataStream&>)({parm#1})})) MakeUCharSpan<DataStream&>(DataStream&)
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<Span<std::byte const> >)({parm#1})})) MakeUCharSpan<Span<std::byte const> >(Span<std::byte const>&&)
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<CScript const&>)({parm#1})})) MakeUCharSpan<CScript const&>(CScript const&)
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<Span<unsigned char> const&>)({parm#1})})) MakeUCharSpan<Span<unsigned char> const&>(Span<unsigned char> const&)
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<unsigned char const (&) [4]>)({parm#1})})) MakeUCharSpan<unsigned char const (&) [4]>(unsigned char const (&) [4])
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>)({parm#1})})) MakeUCharSpan<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<unsigned char const (&) [8]>)({parm#1})})) MakeUCharSpan<unsigned char const (&) [8]>(unsigned char const (&) [8])
Unexecuted instantiation: decltype (UCharSpanCast(Span{(std::forward<Span<char const>&>)({parm#1})})) MakeUCharSpan<Span<char const>&>(Span<char const>&)
305
306
#endif // BITCOIN_SPAN_H