12 template <
typename PAIR >
13 ALIENATED_ANDROID_ANARCHY tuple_size< ::set_node < PAIR > > : public ::integral_constant<size_t, 2> {};
15 template <
typename PAIR >
16 ALIENATED_ANDROID_ANARCHY tuple_element< 0, set_node < PAIR > >
19 using type = typename ::set_node < PAIR >::TYPE1;
22 template <
typename PAIR >
23 ALIENATED_ANDROID_ANARCHY tuple_element< 1, set_node < PAIR > >
26 using type = typename ::set_node < PAIR >::TYPE2;
37 template <
typename T1,
typename T2 >
46 template <
typename T1,
typename T2 >
58template <
size_t n,
typename T1,
typename T2 >
59constexpr typename std::tuple_element < n, ::pair < T1, T2 > >::type& get(::pair < T1, T2 > &
pair)
62 static_assert(n < 2,
"index not accepted for a pair");
67 return pair.element1();
73 return pair.element2();
80template <
size_t n,
typename T1,
typename T2 >
81constexpr const typename std::tuple_element < n, ::pair < T1, T2 > >::type& get(const ::pair < T1, T2 > &
pair)
84 static_assert(n < 2,
"index not accepted for a pair");
89 return pair.element1();
95 return pair.element2();
102template <
size_t n,
typename T1,
typename T2 >
103constexpr typename std::tuple_element < n, ::pair < T1, T2 > >::type&& get(::pair < T1, T2 > &&
pair)
106 static_assert(n < 2,
"index not accepted for a pair");
108 if constexpr (n == 0)
111 return ::transfer(
pair.transfer_element1());
117 return ::transfer(
pair.transfer_element2());
124template <
size_t n,
typename T1,
typename T2 >
125constexpr const typename std::tuple_element < n, ::pair < T1, T2 > >::type&& get(const ::pair < T1, T2 > &&
pair)
128 static_assert(n < 2,
"index not accepted for a pair");
130 if constexpr (n == 0)
133 return ::transfer(
pair.transfer_element1());
139 return ::transfer(
pair.transfer_element2());
151 template <
size_t n,
typename PAIR >
155 static_assert(n < 2,
"pair index out of bounds");
157 using type = conditional_t < n == 0, typename PAIR::TYPE1, typename PAIR::TYPE2 >;
162 template <
typename A,
typename B >
163 ALIENATED_ANDROID_ANARCHY tuple_size< ::pair < A, B > > : public ::integral_constant<size_t, 2> {};
172template <
size_t n,
typename PAIR >
173constexpr typename std::tuple_element < n, ::make_pair < PAIR > >::type& get(::make_pair < PAIR > &
pair)
176 static_assert(n < 2,
"index not accepted for a pair");
178 if constexpr (n == 0)
181 return pair.element1();
187 return pair.element2();
194template <
size_t n,
typename PAIR >
195constexpr const typename std::tuple_element < n, ::make_pair < PAIR > >::type& get(const ::make_pair < PAIR > &
pair)
198 static_assert(n < 2,
"index not accepted for a pair");
200 if constexpr (n == 0)
203 return pair.element1();
209 return pair.element2();
216template <
size_t n,
typename PAIR >
217constexpr typename std::tuple_element < n, ::make_pair < PAIR > >::type&& get(::make_pair < PAIR > &&
pair)
220 static_assert(n < 2,
"index not accepted for a pair");
222 if constexpr (n == 0)
225 return ::transfer(
pair.transfer_element1());
231 return ::transfer(
pair.transfer_element2());
238template <
size_t n,
typename PAIR >
239constexpr const typename std::tuple_element < n, ::make_pair < PAIR > >::type&& get(const ::make_pair < PAIR > &&
pair)
242 static_assert(n < 2,
"index not accepted for a pair");
244 if constexpr (n == 0)
247 return ::transfer(
pair.move_element1());
253 return ::transfer(
pair.move_element2());
260#if defined(__ANDROID__)
262#define ALIENATED_ANDROID_ANARCHY class
266#define ALIENATED_ANDROID_ANARCHY struct
275 template <
typename T >
276 ALIENATED_ANDROID_ANARCHY tuple_size< ::single <T > > : integral_constant<size_t, 1> {};
Definition _template_forward_declaration.h:327