Coverage Report

Created: 2025-08-28 06:26

/src/serenity/AK/Tuple.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright (c) 2021, Ali Mohammad Pur <mpfard@serenityos.org>
3
 *
4
 * SPDX-License-Identifier: BSD-2-Clause
5
 */
6
7
#pragma once
8
9
#include <AK/StdLibExtras.h>
10
#include <AK/TypeList.h>
11
12
namespace AK::Detail {
13
14
template<typename... Ts>
15
struct Tuple {
16
};
17
18
template<typename T>
19
struct Tuple<T> {
20
    Tuple(T&& value)
21
    requires(!IsSame < T &&, T const& >)
22
1.52M
        : value(forward<T>(value))
23
1.52M
    {
24
1.52M
    }
_ZN2AK6Detail5TupleIJN4IMAP17FetchResponseDataEEEC2EOS3_Qnt6IsSameIOT_RKS6_E
Line
Count
Source
22
1.51M
        : value(forward<T>(value))
23
1.51M
    {
24
1.51M
    }
Unexecuted instantiation: _ZN2AK6Detail5TupleIJNS_13NonnullOwnPtrIN4IMAP13BodyStructureEEEEEC2EOS5_Qnt6IsSameIOT_RKS8_E
_ZN2AK6Detail5TupleIJNS_10ByteStringEEEC2EOS2_Qnt6IsSameIOT_RKS5_E
Line
Count
Source
22
15.3k
        : value(forward<T>(value))
23
15.3k
    {
24
15.3k
    }
_ZN2AK6Detail5TupleIJNS_7HashMapINS_10ByteStringES3_NS_6TraitsIS3_EES5_Lb0EEEEEC2EOS6_Qnt6IsSameIOT_RKS9_E
Line
Count
Source
22
1.39k
        : value(forward<T>(value))
23
1.39k
    {
24
1.39k
    }
Unexecuted instantiation: _ZN2AK6Detail5TupleIJNS_8OptionalIRmEEEEC2EOS4_Qnt6IsSameIOT_RKS7_E
25
26
    Tuple(T const& value)
27
        : value(value)
28
    {
29
    }
30
31
    template<typename U>
32
    U& get()
33
    {
34
        static_assert(IsSame<T, U>, "Invalid tuple access");
35
        return value;
36
    }
37
38
    template<typename U>
39
    U const& get() const
40
    {
41
        return const_cast<Tuple<T>&>(*this).get<U>();
42
    }
43
44
    template<typename U, size_t index>
45
    U& get_with_index()
46
1.27M
    {
47
1.27M
        static_assert(IsSame<T, U> && index == 0, "Invalid tuple access");
48
1.27M
        return value;
49
1.27M
    }
Unexecuted instantiation: AK::NonnullOwnPtr<IMAP::BodyStructure>& AK::Detail::Tuple<AK::NonnullOwnPtr<IMAP::BodyStructure> >::get_with_index<AK::NonnullOwnPtr<IMAP::BodyStructure>, 0ul>()
AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false>& AK::Detail::Tuple<AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false> >::get_with_index<AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false>, 0ul>()
Line
Count
Source
46
1.27k
    {
47
1.27k
        static_assert(IsSame<T, U> && index == 0, "Invalid tuple access");
48
1.27k
        return value;
49
1.27k
    }
AK::ByteString& AK::Detail::Tuple<AK::ByteString>::get_with_index<AK::ByteString, 0ul>()
Line
Count
Source
46
7.69k
    {
47
7.69k
        static_assert(IsSame<T, U> && index == 0, "Invalid tuple access");
48
7.69k
        return value;
49
7.69k
    }
IMAP::FetchResponseData& AK::Detail::Tuple<IMAP::FetchResponseData>::get_with_index<IMAP::FetchResponseData, 0ul>()
Line
Count
Source
46
1.26M
    {
47
1.26M
        static_assert(IsSame<T, U> && index == 0, "Invalid tuple access");
48
1.26M
        return value;
49
1.26M
    }
Unexecuted instantiation: AK::Optional<unsigned long&>& AK::Detail::Tuple<AK::Optional<unsigned long&> >::get_with_index<AK::Optional<unsigned long&>, 0ul>()
Unexecuted instantiation: char const*& AK::Detail::Tuple<char const*>::get_with_index<char const*, 0ul>()
50
51
    template<typename U, size_t index>
52
    U const& get_with_index() const
53
    {
54
        return const_cast<Tuple<T>&>(*this).get_with_index<U, index>();
55
    }
56
57
private:
58
    T value;
59
};
60
61
template<typename T, typename... TRest>
62
struct Tuple<T, TRest...> : Tuple<TRest...> {
63
64
    template<typename FirstT, typename... RestT>
65
    Tuple(FirstT&& first, RestT&&... rest)
66
116
        : Tuple<TRest...>(forward<RestT>(rest)...)
67
116
        , value(forward<FirstT>(first))
68
116
    {
69
116
    }
70
71
    Tuple(T&& first, TRest&&... rest)
72
1.52M
        : Tuple<TRest...>(move(rest)...)
73
1.51M
        , value(move(first))
74
1.52M
    {
75
1.52M
    }
AK::Detail::Tuple<unsigned int, IMAP::FetchResponseData>::Tuple(unsigned int&&, IMAP::FetchResponseData&&)
Line
Count
Source
72
1.51M
        : Tuple<TRest...>(move(rest)...)
73
1.51M
        , value(move(first))
74
1.51M
    {
75
1.51M
    }
Unexecuted instantiation: AK::Detail::Tuple<IMAP::Envelope, AK::NonnullOwnPtr<IMAP::BodyStructure> >::Tuple(IMAP::Envelope&&, AK::NonnullOwnPtr<IMAP::BodyStructure>&&)
AK::Detail::Tuple<IMAP::FetchCommand::DataItem, AK::ByteString>::Tuple(IMAP::FetchCommand::DataItem&&, AK::ByteString&&)
Line
Count
Source
72
15.3k
        : Tuple<TRest...>(move(rest)...)
73
15.3k
        , value(move(first))
74
15.3k
    {
75
15.3k
    }
AK::Detail::Tuple<AK::ByteString, AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false> >::Tuple(AK::ByteString&&, AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false>&&)
Line
Count
Source
72
1.27k
        : Tuple<TRest...>(move(rest)...)
73
1.27k
        , value(move(first))
74
1.27k
    {
75
1.27k
    }
Unexecuted instantiation: AK::Detail::Tuple<AK::Optional<unsigned long&>, AK::Optional<unsigned long&> >::Tuple(AK::Optional<unsigned long&>&&, AK::Optional<unsigned long&>&&)
76
77
    template<typename U>
78
    U& get()
79
    {
80
        if constexpr (IsSame<T, U>)
81
            return value;
82
        else
83
            return Tuple<TRest...>::template get<U>();
84
    }
85
86
    template<typename U>
87
    U const& get() const
88
    {
89
        return const_cast<Tuple<T, TRest...>&>(*this).get<U>();
90
    }
91
92
    template<typename U, size_t index>
93
    U& get_with_index()
94
2.54M
    {
95
        if constexpr (IsSame<T, U> && index == 0)
96
1.27M
            return value;
97
        else
98
1.27M
            return Tuple<TRest...>::template get_with_index<U, index - 1>();
99
2.54M
    }
Unexecuted instantiation: IMAP::Envelope& AK::Detail::Tuple<IMAP::Envelope, AK::NonnullOwnPtr<IMAP::BodyStructure> >::get_with_index<IMAP::Envelope, 0ul>()
Unexecuted instantiation: AK::NonnullOwnPtr<IMAP::BodyStructure>& AK::Detail::Tuple<IMAP::Envelope, AK::NonnullOwnPtr<IMAP::BodyStructure> >::get_with_index<AK::NonnullOwnPtr<IMAP::BodyStructure>, 1ul>()
AK::ByteString& AK::Detail::Tuple<AK::ByteString, AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false> >::get_with_index<AK::ByteString, 0ul>()
Line
Count
Source
94
1.27k
    {
95
        if constexpr (IsSame<T, U> && index == 0)
96
1.27k
            return value;
97
        else
98
            return Tuple<TRest...>::template get_with_index<U, index - 1>();
99
1.27k
    }
AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false>& AK::Detail::Tuple<AK::ByteString, AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false> >::get_with_index<AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false>, 1ul>()
Line
Count
Source
94
1.27k
    {
95
        if constexpr (IsSame<T, U> && index == 0)
96
            return value;
97
        else
98
1.27k
            return Tuple<TRest...>::template get_with_index<U, index - 1>();
99
1.27k
    }
IMAP::FetchCommand::DataItem& AK::Detail::Tuple<IMAP::FetchCommand::DataItem, AK::ByteString>::get_with_index<IMAP::FetchCommand::DataItem, 0ul>()
Line
Count
Source
94
7.69k
    {
95
        if constexpr (IsSame<T, U> && index == 0)
96
7.69k
            return value;
97
        else
98
            return Tuple<TRest...>::template get_with_index<U, index - 1>();
99
7.69k
    }
AK::ByteString& AK::Detail::Tuple<IMAP::FetchCommand::DataItem, AK::ByteString>::get_with_index<AK::ByteString, 1ul>()
Line
Count
Source
94
7.69k
    {
95
        if constexpr (IsSame<T, U> && index == 0)
96
            return value;
97
        else
98
7.69k
            return Tuple<TRest...>::template get_with_index<U, index - 1>();
99
7.69k
    }
unsigned int& AK::Detail::Tuple<unsigned int, IMAP::FetchResponseData>::get_with_index<unsigned int, 0ul>()
Line
Count
Source
94
1.26M
    {
95
        if constexpr (IsSame<T, U> && index == 0)
96
1.26M
            return value;
97
        else
98
            return Tuple<TRest...>::template get_with_index<U, index - 1>();
99
1.26M
    }
IMAP::FetchResponseData& AK::Detail::Tuple<unsigned int, IMAP::FetchResponseData>::get_with_index<IMAP::FetchResponseData, 1ul>()
Line
Count
Source
94
1.26M
    {
95
        if constexpr (IsSame<T, U> && index == 0)
96
            return value;
97
        else
98
1.26M
            return Tuple<TRest...>::template get_with_index<U, index - 1>();
99
1.26M
    }
Unexecuted instantiation: AK::Optional<unsigned long&>& AK::Detail::Tuple<AK::Optional<unsigned long&>, AK::Optional<unsigned long&> >::get_with_index<AK::Optional<unsigned long&>, 0ul>()
Unexecuted instantiation: AK::Optional<unsigned long&>& AK::Detail::Tuple<AK::Optional<unsigned long&>, AK::Optional<unsigned long&> >::get_with_index<AK::Optional<unsigned long&>, 1ul>()
100
101
    template<typename U, size_t index>
102
    U const& get_with_index() const
103
    {
104
        return const_cast<Tuple<T, TRest...>&>(*this).get_with_index<U, index>();
105
    }
106
107
private:
108
    T value;
109
};
110
111
}
112
113
namespace AK {
114
115
template<typename... Ts>
116
struct Tuple : Detail::Tuple<Ts...> {
117
    using Types = TypeList<Ts...>;
118
    using Detail::Tuple<Ts...>::Tuple;
119
    using Indices = MakeIndexSequence<sizeof...(Ts)>;
120
121
    Tuple(Tuple&& other)
122
1.27M
        : Tuple(move(other), Indices())
123
1.27M
    {
124
1.27M
    }
AK::Tuple<unsigned int, IMAP::FetchResponseData>::Tuple(AK::Tuple<unsigned int, IMAP::FetchResponseData>&&)
Line
Count
Source
122
1.26M
        : Tuple(move(other), Indices())
123
1.26M
    {
124
1.26M
    }
Unexecuted instantiation: AK::Tuple<IMAP::Envelope, AK::NonnullOwnPtr<IMAP::BodyStructure> >::Tuple(AK::Tuple<IMAP::Envelope, AK::NonnullOwnPtr<IMAP::BodyStructure> >&&)
AK::Tuple<IMAP::FetchCommand::DataItem, AK::ByteString>::Tuple(AK::Tuple<IMAP::FetchCommand::DataItem, AK::ByteString>&&)
Line
Count
Source
122
7.69k
        : Tuple(move(other), Indices())
123
7.69k
    {
124
7.69k
    }
AK::Tuple<AK::ByteString, AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false> >::Tuple(AK::Tuple<AK::ByteString, AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false> >&&)
Line
Count
Source
122
1.27k
        : Tuple(move(other), Indices())
123
1.27k
    {
124
1.27k
    }
125
126
    Tuple(Tuple const& other)
127
        : Tuple(other, Indices())
128
    {
129
    }
130
131
    Tuple& operator=(Tuple&& other)
132
0
    {
133
0
        set(move(other), Indices());
134
0
        return *this;
135
0
    }
Unexecuted instantiation: AK::Tuple<AK::ByteString, AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false> >::operator=(AK::Tuple<AK::ByteString, AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false> >&&)
Unexecuted instantiation: AK::Tuple<IMAP::Envelope, AK::NonnullOwnPtr<IMAP::BodyStructure> >::operator=(AK::Tuple<IMAP::Envelope, AK::NonnullOwnPtr<IMAP::BodyStructure> >&&)
136
137
    Tuple& operator=(Tuple const& other)
138
    {
139
        set(other, Indices());
140
        return *this;
141
    }
142
143
    template<typename T>
144
    auto& get()
145
    {
146
        return Detail::Tuple<Ts...>::template get<T>();
147
    }
148
149
    template<size_t index>
150
    auto& get()
151
2.54M
    {
152
2.54M
        return Detail::Tuple<Ts...>::template get_with_index<typename Types::template Type<index>, index>();
153
2.54M
    }
Unexecuted instantiation: auto& AK::Tuple<IMAP::Envelope, AK::NonnullOwnPtr<IMAP::BodyStructure> >::get<0ul>()
Unexecuted instantiation: auto& AK::Tuple<IMAP::Envelope, AK::NonnullOwnPtr<IMAP::BodyStructure> >::get<1ul>()
auto& AK::Tuple<AK::ByteString, AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false> >::get<0ul>()
Line
Count
Source
151
1.27k
    {
152
1.27k
        return Detail::Tuple<Ts...>::template get_with_index<typename Types::template Type<index>, index>();
153
1.27k
    }
auto& AK::Tuple<AK::ByteString, AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false> >::get<1ul>()
Line
Count
Source
151
1.27k
    {
152
1.27k
        return Detail::Tuple<Ts...>::template get_with_index<typename Types::template Type<index>, index>();
153
1.27k
    }
auto& AK::Tuple<IMAP::FetchCommand::DataItem, AK::ByteString>::get<0ul>()
Line
Count
Source
151
7.69k
    {
152
7.69k
        return Detail::Tuple<Ts...>::template get_with_index<typename Types::template Type<index>, index>();
153
7.69k
    }
auto& AK::Tuple<IMAP::FetchCommand::DataItem, AK::ByteString>::get<1ul>()
Line
Count
Source
151
7.69k
    {
152
7.69k
        return Detail::Tuple<Ts...>::template get_with_index<typename Types::template Type<index>, index>();
153
7.69k
    }
auto& AK::Tuple<unsigned int, IMAP::FetchResponseData>::get<0ul>()
Line
Count
Source
151
1.26M
    {
152
1.26M
        return Detail::Tuple<Ts...>::template get_with_index<typename Types::template Type<index>, index>();
153
1.26M
    }
auto& AK::Tuple<unsigned int, IMAP::FetchResponseData>::get<1ul>()
Line
Count
Source
151
1.26M
    {
152
1.26M
        return Detail::Tuple<Ts...>::template get_with_index<typename Types::template Type<index>, index>();
153
1.26M
    }
Unexecuted instantiation: auto& AK::Tuple<AK::Optional<unsigned long&>, AK::Optional<unsigned long&> >::get<0ul>()
Unexecuted instantiation: auto& AK::Tuple<AK::Optional<unsigned long&>, AK::Optional<unsigned long&> >::get<1ul>()
Unexecuted instantiation: auto& AK::Tuple<char const*>::get<0ul>()
154
155
    template<typename T>
156
    auto& get() const
157
    {
158
        return Detail::Tuple<Ts...>::template get<T>();
159
    }
160
161
    template<size_t index>
162
    auto& get() const
163
    {
164
        return Detail::Tuple<Ts...>::template get_with_index<typename Types::template Type<index>, index>();
165
    }
166
167
    template<typename F>
168
    auto apply_as_args(F&& f)
169
0
    {
170
0
        return apply_as_args(forward<F>(f), Indices());
171
0
    }
Unexecuted instantiation: Shell.cpp:_ZN2AK5TupleIJNS_8OptionalIRmEES3_EE13apply_as_argsIZZN5ShellL9do_escapeIJmmENS_10ByteStringEEES8_NS6_5Shell10EscapeModeERT0_DpRT_ENKUlvE_clEvEUlTpTySF_E_EEDaOT_
Unexecuted instantiation: Shell.cpp:_ZN2AK5TupleIJEE13apply_as_argsIZZN5ShellL9do_escapeIJENS_9Utf32ViewEEENS_10ByteStringENS3_5Shell10EscapeModeERT0_DpRT_ENKUlvE_clEvEUlTpTySD_E_EEDaOT_
Unexecuted instantiation: Shell.cpp:_ZN2AK5TupleIJEE13apply_as_argsIZZN5ShellL9do_escapeIJENS_8Utf8ViewEEENS_10ByteStringENS3_5Shell10EscapeModeERT0_DpRT_ENKUlvE_clEvEUlTpTySD_E_EEDaOT_
Unexecuted instantiation: Shell.cpp:_ZN2AK5TupleIJEE13apply_as_argsIZZN5ShellL9do_escapeIJENS_10StringViewEEENS_10ByteStringENS3_5Shell10EscapeModeERT0_DpRT_ENKUlvE_clEvEUlTpTySD_E_EEDaOT_
Unexecuted instantiation: _ZN2AK5TupleIJPKcEE13apply_as_argsIZN4Wasm9Validator6Errors19invalid_stack_stateIJS2_EEENS5_15ValidationErrorERKNS6_5StackENS0_IJDpT_EEENS_14SourceLocationEEUlTpTyDpRKSD_E_EEDaOT_
172
173
    template<typename F>
174
    auto apply_as_args(F&& f) const
175
    {
176
        return apply_as_args(forward<F>(f), Indices());
177
    }
178
179
0
    static constexpr auto size() { return sizeof...(Ts); }
180
181
private:
182
    template<size_t... Is>
183
    Tuple(Tuple&& other, IndexSequence<Is...>)
184
1.27M
        : Detail::Tuple<Ts...>(move(other.get<Is>())...)
185
1.27M
    {
186
1.27M
    }
AK::Tuple<unsigned int, IMAP::FetchResponseData>::Tuple<0ul, 1ul>(AK::Tuple<unsigned int, IMAP::FetchResponseData>&&, AK::Detail::IntegerSequence<unsigned long, 0ul, 1ul>)
Line
Count
Source
184
1.26M
        : Detail::Tuple<Ts...>(move(other.get<Is>())...)
185
1.26M
    {
186
1.26M
    }
Unexecuted instantiation: AK::Tuple<IMAP::Envelope, AK::NonnullOwnPtr<IMAP::BodyStructure> >::Tuple<0ul, 1ul>(AK::Tuple<IMAP::Envelope, AK::NonnullOwnPtr<IMAP::BodyStructure> >&&, AK::Detail::IntegerSequence<unsigned long, 0ul, 1ul>)
AK::Tuple<IMAP::FetchCommand::DataItem, AK::ByteString>::Tuple<0ul, 1ul>(AK::Tuple<IMAP::FetchCommand::DataItem, AK::ByteString>&&, AK::Detail::IntegerSequence<unsigned long, 0ul, 1ul>)
Line
Count
Source
184
7.69k
        : Detail::Tuple<Ts...>(move(other.get<Is>())...)
185
7.69k
    {
186
7.69k
    }
AK::Tuple<AK::ByteString, AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false> >::Tuple<0ul, 1ul>(AK::Tuple<AK::ByteString, AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false> >&&, AK::Detail::IntegerSequence<unsigned long, 0ul, 1ul>)
Line
Count
Source
184
1.27k
        : Detail::Tuple<Ts...>(move(other.get<Is>())...)
185
1.27k
    {
186
1.27k
    }
187
188
    template<size_t... Is>
189
    Tuple(Tuple const& other, IndexSequence<Is...>)
190
        : Detail::Tuple<Ts...>(other.get<Is>()...)
191
    {
192
    }
193
194
    template<size_t... Is>
195
    void set(Tuple&& other, IndexSequence<Is...>)
196
0
    {
197
0
        ((get<Is>() = move(other.get<Is>())), ...);
198
0
    }
Unexecuted instantiation: void AK::Tuple<AK::ByteString, AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false> >::set<0ul, 1ul>(AK::Tuple<AK::ByteString, AK::HashMap<AK::ByteString, AK::ByteString, AK::Traits<AK::ByteString>, AK::Traits<AK::ByteString>, false> >&&, AK::Detail::IntegerSequence<unsigned long, 0ul, 1ul>)
Unexecuted instantiation: void AK::Tuple<IMAP::Envelope, AK::NonnullOwnPtr<IMAP::BodyStructure> >::set<0ul, 1ul>(AK::Tuple<IMAP::Envelope, AK::NonnullOwnPtr<IMAP::BodyStructure> >&&, AK::Detail::IntegerSequence<unsigned long, 0ul, 1ul>)
199
200
    template<size_t... Is>
201
    void set(Tuple const& other, IndexSequence<Is...>)
202
    {
203
        ((get<Is>() = other.get<Is>()), ...);
204
    }
205
206
    template<typename F, size_t... Is>
207
    auto apply_as_args(F&& f, IndexSequence<Is...>)
208
0
    {
209
0
        return forward<F>(f)(get<Is>()...);
210
0
    }
Unexecuted instantiation: Shell.cpp:_ZN2AK5TupleIJNS_8OptionalIRmEES3_EE13apply_as_argsIZZN5ShellL9do_escapeIJmmENS_10ByteStringEEES8_NS6_5Shell10EscapeModeERT0_DpRT_ENKUlvE_clEvEUlTpTySF_E_JLm0ELm1EEEEDaOT_NS_6Detail15IntegerSequenceImJXspT0_EEEE
Unexecuted instantiation: Shell.cpp:_ZN2AK5TupleIJEE13apply_as_argsIZZN5ShellL9do_escapeIJENS_9Utf32ViewEEENS_10ByteStringENS3_5Shell10EscapeModeERT0_DpRT_ENKUlvE_clEvEUlTpTySD_E_TpTnmJEEEDaOT_NS_6Detail15IntegerSequenceImJXspT0_EEEE
Unexecuted instantiation: Shell.cpp:_ZN2AK5TupleIJEE13apply_as_argsIZZN5ShellL9do_escapeIJENS_8Utf8ViewEEENS_10ByteStringENS3_5Shell10EscapeModeERT0_DpRT_ENKUlvE_clEvEUlTpTySD_E_TpTnmJEEEDaOT_NS_6Detail15IntegerSequenceImJXspT0_EEEE
Unexecuted instantiation: Shell.cpp:_ZN2AK5TupleIJEE13apply_as_argsIZZN5ShellL9do_escapeIJENS_10StringViewEEENS_10ByteStringENS3_5Shell10EscapeModeERT0_DpRT_ENKUlvE_clEvEUlTpTySD_E_TpTnmJEEEDaOT_NS_6Detail15IntegerSequenceImJXspT0_EEEE
Unexecuted instantiation: _ZN2AK5TupleIJPKcEE13apply_as_argsIZN4Wasm9Validator6Errors19invalid_stack_stateIJS2_EEENS5_15ValidationErrorERKNS6_5StackENS0_IJDpT_EEENS_14SourceLocationEEUlTpTyDpRKSD_E_JLm0EEEEDaOT_NS_6Detail15IntegerSequenceImJXspT0_EEEE
211
212
    template<typename F, size_t... Is>
213
    auto apply_as_args(F&& f, IndexSequence<Is...>) const
214
    {
215
        return forward<F>(f)(get<Is>()...);
216
    }
217
};
218
219
template<class... Args>
220
Tuple(Args... args) -> Tuple<Args...>;
221
222
}
223
224
#if USING_AK_GLOBALLY
225
using AK::Tuple;
226
#endif