26namespace aui::reflect::detail {
28template <
class... Args>
29constexpr auto make_tuple_of_references(Args&&...
args)
noexcept {
30 return std::tuple<Args&...>(
args...);
33template<
typename T,
typename Arg>
34constexpr decltype(
auto) add_cv(Arg& arg)
noexcept {
35 if constexpr (std::is_const<T>::value && std::is_volatile<T>::value) {
36 return const_cast<const volatile Arg&
>(arg);
38 else if constexpr (std::is_const<T>::value) {
39 return const_cast<const Arg&
>(arg);
41 else if constexpr (std::is_volatile<T>::value) {
42 return const_cast<volatile Arg&
>(arg);
45 return const_cast<Arg&
>(arg);
50template<
typename T,
typename Sb,
typename Arg>
51constexpr decltype(
auto) workaround_cast(Arg& arg)
noexcept {
52 using output_arg_t = std::conditional_t<!std::is_reference<Sb>(),
decltype(detail::add_cv<T>(arg)), Sb>;
53 return const_cast<output_arg_t
>(arg);
57constexpr auto tie_as_tuple(Clazz& , std::integral_constant<std::size_t, 0>)
noexcept {
58 return std::tuple<>{};
62constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 1>, std::enable_if_t<std::is_class< std::remove_cv_t<Clazz> >::value>* =
nullptr) noexcept {
63 auto& [a] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
64 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(a)>(a));
69constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 1>, std::enable_if_t<!std::is_class< std::remove_cv_t<Clazz> >::value>* =
nullptr) noexcept {
70 return detail::make_tuple_of_references(clazz);
73template<
typename Clazz>
74constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 1>)
noexcept {
77 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
78 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0));
80template<
typename Clazz>
81constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 2>)
noexcept {
84 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
85 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1));
87template<
typename Clazz>
88constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 3>)
noexcept {
91 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
92 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2));
94template<
typename Clazz>
95constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 4>)
noexcept {
98 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
99 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3));
101template<
typename Clazz>
102constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 5>)
noexcept {
105 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
106 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4));
108template<
typename Clazz>
109constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 6>)
noexcept {
111 f0, f1, f2, f3, f4, f5
112 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
113 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5));
115template<
typename Clazz>
116constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 7>)
noexcept {
118 f0, f1, f2, f3, f4, f5, f6
119 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
120 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6));
122template<
typename Clazz>
123constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 8>)
noexcept {
125 f0, f1, f2, f3, f4, f5, f6, f7
126 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
127 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7));
129template<
typename Clazz>
130constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 9>)
noexcept {
132 f0, f1, f2, f3, f4, f5, f6, f7, f8
133 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
134 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8));
136template<
typename Clazz>
137constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 10>)
noexcept {
139 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9
140 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
141 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9));
143template<
typename Clazz>
144constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 11>)
noexcept {
146 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10
147 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
148 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10));
150template<
typename Clazz>
151constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 12>)
noexcept {
153 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11
154 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
155 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11));
157template<
typename Clazz>
158constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 13>)
noexcept {
160 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12
161 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
162 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12));
164template<
typename Clazz>
165constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 14>)
noexcept {
167 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13
168 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
169 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13));
171template<
typename Clazz>
172constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 15>)
noexcept {
174 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14
175 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
176 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14));
178template<
typename Clazz>
179constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 16>)
noexcept {
181 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15
182 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
183 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15));
185template<
typename Clazz>
186constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 17>)
noexcept {
188 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16
189 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
190 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16));
192template<
typename Clazz>
193constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 18>)
noexcept {
195 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17
196 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
197 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17));
199template<
typename Clazz>
200constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 19>)
noexcept {
202 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18
203 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
204 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18));
206template<
typename Clazz>
207constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 20>)
noexcept {
209 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19
210 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
211 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19));
213template<
typename Clazz>
214constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 21>)
noexcept {
216 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20
217 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
218 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20));
220template<
typename Clazz>
221constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 22>)
noexcept {
223 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21
224 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
225 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21));
227template<
typename Clazz>
228constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 23>)
noexcept {
230 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22
231 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
232 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22));
234template<
typename Clazz>
235constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 24>)
noexcept {
237 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23
238 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
239 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23));
241template<
typename Clazz>
242constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 25>)
noexcept {
244 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24
245 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
246 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24));
248template<
typename Clazz>
249constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 26>)
noexcept {
251 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25
252 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
253 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25));
255template<
typename Clazz>
256constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 27>)
noexcept {
258 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26
259 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
260 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26));
262template<
typename Clazz>
263constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 28>)
noexcept {
265 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27
266 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
267 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27));
269template<
typename Clazz>
270constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 29>)
noexcept {
272 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28
273 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
274 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28));
276template<
typename Clazz>
277constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 30>)
noexcept {
279 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29
280 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
281 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29));
283template<
typename Clazz>
284constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 31>)
noexcept {
286 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30
287 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
288 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30));
290template<
typename Clazz>
291constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 32>)
noexcept {
293 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31
294 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
295 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31));
297template<
typename Clazz>
298constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 33>)
noexcept {
300 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32
301 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
302 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32));
304template<
typename Clazz>
305constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 34>)
noexcept {
307 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33
308 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
309 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33));
311template<
typename Clazz>
312constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 35>)
noexcept {
314 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34
315 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
316 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34));
318template<
typename Clazz>
319constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 36>)
noexcept {
321 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35
322 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
323 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35));
325template<
typename Clazz>
326constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 37>)
noexcept {
328 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36
329 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
330 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36));
332template<
typename Clazz>
333constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 38>)
noexcept {
335 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37
336 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
337 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37));
339template<
typename Clazz>
340constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 39>)
noexcept {
342 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38
343 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
344 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38));
346template<
typename Clazz>
347constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 40>)
noexcept {
349 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39
350 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
351 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39));
353template<
typename Clazz>
354constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 41>)
noexcept {
356 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40
357 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
358 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40));
360template<
typename Clazz>
361constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 42>)
noexcept {
363 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41
364 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
365 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41));
367template<
typename Clazz>
368constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 43>)
noexcept {
370 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42
371 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
372 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42));
374template<
typename Clazz>
375constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 44>)
noexcept {
377 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43
378 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
379 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43));
381template<
typename Clazz>
382constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 45>)
noexcept {
384 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44
385 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
386 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44));
388template<
typename Clazz>
389constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 46>)
noexcept {
391 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45
392 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
393 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45));
395template<
typename Clazz>
396constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 47>)
noexcept {
398 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46
399 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
400 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46));
402template<
typename Clazz>
403constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 48>)
noexcept {
405 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47
406 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
407 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47));
409template<
typename Clazz>
410constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 49>)
noexcept {
412 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48
413 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
414 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48));
416template<
typename Clazz>
417constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 50>)
noexcept {
419 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49
420 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
421 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49));
423template<
typename Clazz>
424constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 51>)
noexcept {
426 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50
427 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
428 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50));
430template<
typename Clazz>
431constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 52>)
noexcept {
433 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51
434 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
435 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51));
437template<
typename Clazz>
438constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 53>)
noexcept {
440 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52
441 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
442 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52));
444template<
typename Clazz>
445constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 54>)
noexcept {
447 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53
448 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
449 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53));
451template<
typename Clazz>
452constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 55>)
noexcept {
454 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54
455 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
456 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54));
458template<
typename Clazz>
459constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 56>)
noexcept {
461 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55
462 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
463 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55));
465template<
typename Clazz>
466constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 57>)
noexcept {
468 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56
469 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
470 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56));
472template<
typename Clazz>
473constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 58>)
noexcept {
475 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57
476 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
477 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57));
479template<
typename Clazz>
480constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 59>)
noexcept {
482 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58
483 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
484 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58));
486template<
typename Clazz>
487constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 60>)
noexcept {
489 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59
490 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
491 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59));
493template<
typename Clazz>
494constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 61>)
noexcept {
496 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60
497 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
498 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60));
500template<
typename Clazz>
501constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 62>)
noexcept {
503 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61
504 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
505 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61));
507template<
typename Clazz>
508constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 63>)
noexcept {
510 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62
511 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
512 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62));
514template<
typename Clazz>
515constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 64>)
noexcept {
517 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63
518 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
519 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63));
521template<
typename Clazz>
522constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 65>)
noexcept {
524 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64
525 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
526 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64));
528template<
typename Clazz>
529constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 66>)
noexcept {
531 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65
532 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
533 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65));
535template<
typename Clazz>
536constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 67>)
noexcept {
538 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66
539 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
540 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66));
542template<
typename Clazz>
543constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 68>)
noexcept {
545 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67
546 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
547 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67));
549template<
typename Clazz>
550constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 69>)
noexcept {
552 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68
553 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
554 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68));
556template<
typename Clazz>
557constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 70>)
noexcept {
559 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69
560 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
561 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69));
563template<
typename Clazz>
564constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 71>)
noexcept {
566 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70
567 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
568 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70));
570template<
typename Clazz>
571constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 72>)
noexcept {
573 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71
574 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
575 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71));
577template<
typename Clazz>
578constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 73>)
noexcept {
580 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72
581 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
582 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72));
584template<
typename Clazz>
585constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 74>)
noexcept {
587 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73
588 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
589 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73));
591template<
typename Clazz>
592constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 75>)
noexcept {
594 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74
595 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
596 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74));
598template<
typename Clazz>
599constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 76>)
noexcept {
601 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75
602 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
603 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75));
605template<
typename Clazz>
606constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 77>)
noexcept {
608 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76
609 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
610 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76));
612template<
typename Clazz>
613constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 78>)
noexcept {
615 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77
616 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
617 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77));
619template<
typename Clazz>
620constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 79>)
noexcept {
622 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78
623 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
624 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78));
626template<
typename Clazz>
627constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 80>)
noexcept {
629 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79
630 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
631 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79));
633template<
typename Clazz>
634constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 81>)
noexcept {
636 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80
637 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
638 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80));
640template<
typename Clazz>
641constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 82>)
noexcept {
643 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81
644 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
645 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81));
647template<
typename Clazz>
648constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 83>)
noexcept {
650 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82
651 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
652 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82));
654template<
typename Clazz>
655constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 84>)
noexcept {
657 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83
658 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
659 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83));
661template<
typename Clazz>
662constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 85>)
noexcept {
664 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84
665 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
666 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84));
668template<
typename Clazz>
669constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 86>)
noexcept {
671 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84, f85
672 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
673 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84), detail::workaround_cast<Clazz,
decltype(f85)>(f85));
675template<
typename Clazz>
676constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 87>)
noexcept {
678 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84, f85, f86
679 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
680 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84), detail::workaround_cast<Clazz,
decltype(f85)>(f85), detail::workaround_cast<Clazz,
decltype(f86)>(f86));
682template<
typename Clazz>
683constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 88>)
noexcept {
685 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84, f85, f86, f87
686 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
687 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84), detail::workaround_cast<Clazz,
decltype(f85)>(f85), detail::workaround_cast<Clazz,
decltype(f86)>(f86), detail::workaround_cast<Clazz,
decltype(f87)>(f87));
689template<
typename Clazz>
690constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 89>)
noexcept {
692 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84, f85, f86, f87, f88
693 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
694 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84), detail::workaround_cast<Clazz,
decltype(f85)>(f85), detail::workaround_cast<Clazz,
decltype(f86)>(f86), detail::workaround_cast<Clazz,
decltype(f87)>(f87), detail::workaround_cast<Clazz,
decltype(f88)>(f88));
696template<
typename Clazz>
697constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 90>)
noexcept {
699 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84, f85, f86, f87, f88, f89
700 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
701 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84), detail::workaround_cast<Clazz,
decltype(f85)>(f85), detail::workaround_cast<Clazz,
decltype(f86)>(f86), detail::workaround_cast<Clazz,
decltype(f87)>(f87), detail::workaround_cast<Clazz,
decltype(f88)>(f88), detail::workaround_cast<Clazz,
decltype(f89)>(f89));
703template<
typename Clazz>
704constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 91>)
noexcept {
706 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84, f85, f86, f87, f88, f89, f90
707 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
708 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84), detail::workaround_cast<Clazz,
decltype(f85)>(f85), detail::workaround_cast<Clazz,
decltype(f86)>(f86), detail::workaround_cast<Clazz,
decltype(f87)>(f87), detail::workaround_cast<Clazz,
decltype(f88)>(f88), detail::workaround_cast<Clazz,
decltype(f89)>(f89), detail::workaround_cast<Clazz,
decltype(f90)>(f90));
710template<
typename Clazz>
711constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 92>)
noexcept {
713 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84, f85, f86, f87, f88, f89, f90, f91
714 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
715 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84), detail::workaround_cast<Clazz,
decltype(f85)>(f85), detail::workaround_cast<Clazz,
decltype(f86)>(f86), detail::workaround_cast<Clazz,
decltype(f87)>(f87), detail::workaround_cast<Clazz,
decltype(f88)>(f88), detail::workaround_cast<Clazz,
decltype(f89)>(f89), detail::workaround_cast<Clazz,
decltype(f90)>(f90), detail::workaround_cast<Clazz,
decltype(f91)>(f91));
717template<
typename Clazz>
718constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 93>)
noexcept {
720 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84, f85, f86, f87, f88, f89, f90, f91, f92
721 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
722 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84), detail::workaround_cast<Clazz,
decltype(f85)>(f85), detail::workaround_cast<Clazz,
decltype(f86)>(f86), detail::workaround_cast<Clazz,
decltype(f87)>(f87), detail::workaround_cast<Clazz,
decltype(f88)>(f88), detail::workaround_cast<Clazz,
decltype(f89)>(f89), detail::workaround_cast<Clazz,
decltype(f90)>(f90), detail::workaround_cast<Clazz,
decltype(f91)>(f91), detail::workaround_cast<Clazz,
decltype(f92)>(f92));
724template<
typename Clazz>
725constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 94>)
noexcept {
727 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84, f85, f86, f87, f88, f89, f90, f91, f92, f93
728 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
729 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84), detail::workaround_cast<Clazz,
decltype(f85)>(f85), detail::workaround_cast<Clazz,
decltype(f86)>(f86), detail::workaround_cast<Clazz,
decltype(f87)>(f87), detail::workaround_cast<Clazz,
decltype(f88)>(f88), detail::workaround_cast<Clazz,
decltype(f89)>(f89), detail::workaround_cast<Clazz,
decltype(f90)>(f90), detail::workaround_cast<Clazz,
decltype(f91)>(f91), detail::workaround_cast<Clazz,
decltype(f92)>(f92), detail::workaround_cast<Clazz,
decltype(f93)>(f93));
731template<
typename Clazz>
732constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 95>)
noexcept {
734 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84, f85, f86, f87, f88, f89, f90, f91, f92, f93, f94
735 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
736 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84), detail::workaround_cast<Clazz,
decltype(f85)>(f85), detail::workaround_cast<Clazz,
decltype(f86)>(f86), detail::workaround_cast<Clazz,
decltype(f87)>(f87), detail::workaround_cast<Clazz,
decltype(f88)>(f88), detail::workaround_cast<Clazz,
decltype(f89)>(f89), detail::workaround_cast<Clazz,
decltype(f90)>(f90), detail::workaround_cast<Clazz,
decltype(f91)>(f91), detail::workaround_cast<Clazz,
decltype(f92)>(f92), detail::workaround_cast<Clazz,
decltype(f93)>(f93), detail::workaround_cast<Clazz,
decltype(f94)>(f94));
738template<
typename Clazz>
739constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 96>)
noexcept {
741 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84, f85, f86, f87, f88, f89, f90, f91, f92, f93, f94, f95
742 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
743 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84), detail::workaround_cast<Clazz,
decltype(f85)>(f85), detail::workaround_cast<Clazz,
decltype(f86)>(f86), detail::workaround_cast<Clazz,
decltype(f87)>(f87), detail::workaround_cast<Clazz,
decltype(f88)>(f88), detail::workaround_cast<Clazz,
decltype(f89)>(f89), detail::workaround_cast<Clazz,
decltype(f90)>(f90), detail::workaround_cast<Clazz,
decltype(f91)>(f91), detail::workaround_cast<Clazz,
decltype(f92)>(f92), detail::workaround_cast<Clazz,
decltype(f93)>(f93), detail::workaround_cast<Clazz,
decltype(f94)>(f94), detail::workaround_cast<Clazz,
decltype(f95)>(f95));
745template<
typename Clazz>
746constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 97>)
noexcept {
748 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84, f85, f86, f87, f88, f89, f90, f91, f92, f93, f94, f95, f96
749 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
750 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84), detail::workaround_cast<Clazz,
decltype(f85)>(f85), detail::workaround_cast<Clazz,
decltype(f86)>(f86), detail::workaround_cast<Clazz,
decltype(f87)>(f87), detail::workaround_cast<Clazz,
decltype(f88)>(f88), detail::workaround_cast<Clazz,
decltype(f89)>(f89), detail::workaround_cast<Clazz,
decltype(f90)>(f90), detail::workaround_cast<Clazz,
decltype(f91)>(f91), detail::workaround_cast<Clazz,
decltype(f92)>(f92), detail::workaround_cast<Clazz,
decltype(f93)>(f93), detail::workaround_cast<Clazz,
decltype(f94)>(f94), detail::workaround_cast<Clazz,
decltype(f95)>(f95), detail::workaround_cast<Clazz,
decltype(f96)>(f96));
752template<
typename Clazz>
753constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 98>)
noexcept {
755 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84, f85, f86, f87, f88, f89, f90, f91, f92, f93, f94, f95, f96, f97
756 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
757 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84), detail::workaround_cast<Clazz,
decltype(f85)>(f85), detail::workaround_cast<Clazz,
decltype(f86)>(f86), detail::workaround_cast<Clazz,
decltype(f87)>(f87), detail::workaround_cast<Clazz,
decltype(f88)>(f88), detail::workaround_cast<Clazz,
decltype(f89)>(f89), detail::workaround_cast<Clazz,
decltype(f90)>(f90), detail::workaround_cast<Clazz,
decltype(f91)>(f91), detail::workaround_cast<Clazz,
decltype(f92)>(f92), detail::workaround_cast<Clazz,
decltype(f93)>(f93), detail::workaround_cast<Clazz,
decltype(f94)>(f94), detail::workaround_cast<Clazz,
decltype(f95)>(f95), detail::workaround_cast<Clazz,
decltype(f96)>(f96), detail::workaround_cast<Clazz,
decltype(f97)>(f97));
759template<
typename Clazz>
760constexpr auto tie_as_tuple(Clazz& clazz, std::integral_constant<std::size_t, 99>)
noexcept {
762 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62, f63, f64, f65, f66, f67, f68, f69, f70, f71, f72, f73, f74, f75, f76, f77, f78, f79, f80, f81, f82, f83, f84, f85, f86, f87, f88, f89, f90, f91, f92, f93, f94, f95, f96, f97, f98
763 ] =
const_cast<std::remove_cv_t<Clazz>&
>(clazz);
764 return detail::make_tuple_of_references(detail::workaround_cast<Clazz,
decltype(f0)>(f0), detail::workaround_cast<Clazz,
decltype(f1)>(f1), detail::workaround_cast<Clazz,
decltype(f2)>(f2), detail::workaround_cast<Clazz,
decltype(f3)>(f3), detail::workaround_cast<Clazz,
decltype(f4)>(f4), detail::workaround_cast<Clazz,
decltype(f5)>(f5), detail::workaround_cast<Clazz,
decltype(f6)>(f6), detail::workaround_cast<Clazz,
decltype(f7)>(f7), detail::workaround_cast<Clazz,
decltype(f8)>(f8), detail::workaround_cast<Clazz,
decltype(f9)>(f9), detail::workaround_cast<Clazz,
decltype(f10)>(f10), detail::workaround_cast<Clazz,
decltype(f11)>(f11), detail::workaround_cast<Clazz,
decltype(f12)>(f12), detail::workaround_cast<Clazz,
decltype(f13)>(f13), detail::workaround_cast<Clazz,
decltype(f14)>(f14), detail::workaround_cast<Clazz,
decltype(f15)>(f15), detail::workaround_cast<Clazz,
decltype(f16)>(f16), detail::workaround_cast<Clazz,
decltype(f17)>(f17), detail::workaround_cast<Clazz,
decltype(f18)>(f18), detail::workaround_cast<Clazz,
decltype(f19)>(f19), detail::workaround_cast<Clazz,
decltype(f20)>(f20), detail::workaround_cast<Clazz,
decltype(f21)>(f21), detail::workaround_cast<Clazz,
decltype(f22)>(f22), detail::workaround_cast<Clazz,
decltype(f23)>(f23), detail::workaround_cast<Clazz,
decltype(f24)>(f24), detail::workaround_cast<Clazz,
decltype(f25)>(f25), detail::workaround_cast<Clazz,
decltype(f26)>(f26), detail::workaround_cast<Clazz,
decltype(f27)>(f27), detail::workaround_cast<Clazz,
decltype(f28)>(f28), detail::workaround_cast<Clazz,
decltype(f29)>(f29), detail::workaround_cast<Clazz,
decltype(f30)>(f30), detail::workaround_cast<Clazz,
decltype(f31)>(f31), detail::workaround_cast<Clazz,
decltype(f32)>(f32), detail::workaround_cast<Clazz,
decltype(f33)>(f33), detail::workaround_cast<Clazz,
decltype(f34)>(f34), detail::workaround_cast<Clazz,
decltype(f35)>(f35), detail::workaround_cast<Clazz,
decltype(f36)>(f36), detail::workaround_cast<Clazz,
decltype(f37)>(f37), detail::workaround_cast<Clazz,
decltype(f38)>(f38), detail::workaround_cast<Clazz,
decltype(f39)>(f39), detail::workaround_cast<Clazz,
decltype(f40)>(f40), detail::workaround_cast<Clazz,
decltype(f41)>(f41), detail::workaround_cast<Clazz,
decltype(f42)>(f42), detail::workaround_cast<Clazz,
decltype(f43)>(f43), detail::workaround_cast<Clazz,
decltype(f44)>(f44), detail::workaround_cast<Clazz,
decltype(f45)>(f45), detail::workaround_cast<Clazz,
decltype(f46)>(f46), detail::workaround_cast<Clazz,
decltype(f47)>(f47), detail::workaround_cast<Clazz,
decltype(f48)>(f48), detail::workaround_cast<Clazz,
decltype(f49)>(f49), detail::workaround_cast<Clazz,
decltype(f50)>(f50), detail::workaround_cast<Clazz,
decltype(f51)>(f51), detail::workaround_cast<Clazz,
decltype(f52)>(f52), detail::workaround_cast<Clazz,
decltype(f53)>(f53), detail::workaround_cast<Clazz,
decltype(f54)>(f54), detail::workaround_cast<Clazz,
decltype(f55)>(f55), detail::workaround_cast<Clazz,
decltype(f56)>(f56), detail::workaround_cast<Clazz,
decltype(f57)>(f57), detail::workaround_cast<Clazz,
decltype(f58)>(f58), detail::workaround_cast<Clazz,
decltype(f59)>(f59), detail::workaround_cast<Clazz,
decltype(f60)>(f60), detail::workaround_cast<Clazz,
decltype(f61)>(f61), detail::workaround_cast<Clazz,
decltype(f62)>(f62), detail::workaround_cast<Clazz,
decltype(f63)>(f63), detail::workaround_cast<Clazz,
decltype(f64)>(f64), detail::workaround_cast<Clazz,
decltype(f65)>(f65), detail::workaround_cast<Clazz,
decltype(f66)>(f66), detail::workaround_cast<Clazz,
decltype(f67)>(f67), detail::workaround_cast<Clazz,
decltype(f68)>(f68), detail::workaround_cast<Clazz,
decltype(f69)>(f69), detail::workaround_cast<Clazz,
decltype(f70)>(f70), detail::workaround_cast<Clazz,
decltype(f71)>(f71), detail::workaround_cast<Clazz,
decltype(f72)>(f72), detail::workaround_cast<Clazz,
decltype(f73)>(f73), detail::workaround_cast<Clazz,
decltype(f74)>(f74), detail::workaround_cast<Clazz,
decltype(f75)>(f75), detail::workaround_cast<Clazz,
decltype(f76)>(f76), detail::workaround_cast<Clazz,
decltype(f77)>(f77), detail::workaround_cast<Clazz,
decltype(f78)>(f78), detail::workaround_cast<Clazz,
decltype(f79)>(f79), detail::workaround_cast<Clazz,
decltype(f80)>(f80), detail::workaround_cast<Clazz,
decltype(f81)>(f81), detail::workaround_cast<Clazz,
decltype(f82)>(f82), detail::workaround_cast<Clazz,
decltype(f83)>(f83), detail::workaround_cast<Clazz,
decltype(f84)>(f84), detail::workaround_cast<Clazz,
decltype(f85)>(f85), detail::workaround_cast<Clazz,
decltype(f86)>(f86), detail::workaround_cast<Clazz,
decltype(f87)>(f87), detail::workaround_cast<Clazz,
decltype(f88)>(f88), detail::workaround_cast<Clazz,
decltype(f89)>(f89), detail::workaround_cast<Clazz,
decltype(f90)>(f90), detail::workaround_cast<Clazz,
decltype(f91)>(f91), detail::workaround_cast<Clazz,
decltype(f92)>(f92), detail::workaround_cast<Clazz,
decltype(f93)>(f93), detail::workaround_cast<Clazz,
decltype(f94)>(f94), detail::workaround_cast<Clazz,
decltype(f95)>(f95), detail::workaround_cast<Clazz,
decltype(f96)>(f96), detail::workaround_cast<Clazz,
decltype(f97)>(f97), detail::workaround_cast<Clazz,
decltype(f98)>(f98));
767template <
class Clazz, std::
size_t I>
768constexpr void tie_as_tuple(Clazz& , std::integral_constant<std::size_t, I>)
noexcept {
769 static_assert(
sizeof(Clazz) &&
false,
770 "====================> aui::reflect: too many fields in a structure Clazz. Please regenerate aui.core/src/AUI/Reflect/detail/gen.h for an appropriate count of fields.");
API_AUI_CORE const ACommandLineArgs & args() noexcept