Skip to content

Commit a52925e

Browse files
committed
Simplify implementation without tuple
1 parent 58e1b0c commit a52925e

File tree

1 file changed

+3
-24
lines changed

1 file changed

+3
-24
lines changed

include/xsimd/types/xsimd_batch_constant.hpp

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,9 @@ namespace xsimd
7979
constexpr bool operator()(bool x, bool y) const { return x ^ y; }
8080
};
8181

82-
template <class F, class SelfPack, class OtherPack, std::size_t... Indices>
83-
static constexpr batch_bool_constant<T, A, F()(std::tuple_element<Indices, SelfPack>::type::value, std::tuple_element<Indices, OtherPack>::type::value)...>
84-
apply(detail::index_sequence<Indices...>)
85-
{
86-
return {};
87-
}
88-
8982
template <class F, bool... OtherValues>
9083
static constexpr auto apply(batch_bool_constant<T, A, Values...>, batch_bool_constant<T, A, OtherValues...>)
91-
-> decltype(apply<F, std::tuple<std::integral_constant<bool, Values>...>, std::tuple<std::integral_constant<bool, OtherValues>...>>(detail::make_index_sequence<sizeof...(Values)>()))
84+
-> batch_bool_constant<T, A, F()(Values, OtherValues)...>
9285
{
9386
static_assert(sizeof...(Values) == sizeof...(OtherValues), "compatible constant batches");
9487
return {};
@@ -195,16 +188,9 @@ namespace xsimd
195188
constexpr T operator()(T x, T y) const { return x ^ y; }
196189
};
197190

198-
template <class F, class SelfPack, class OtherPack, std::size_t... Indices>
199-
static constexpr batch_constant<T, A, F()(std::tuple_element<Indices, SelfPack>::type::value, std::tuple_element<Indices, OtherPack>::type::value)...>
200-
apply(detail::index_sequence<Indices...>)
201-
{
202-
return {};
203-
}
204-
205191
template <class F, T... OtherValues>
206192
static constexpr auto apply(batch_constant<T, A, Values...>, batch_constant<T, A, OtherValues...>)
207-
-> decltype(apply<F, std::tuple<std::integral_constant<T, Values>...>, std::tuple<std::integral_constant<T, OtherValues>...>>(detail::make_index_sequence<sizeof...(Values)>()))
193+
-> batch_constant<T, A, F()(Values, OtherValues)...>
208194
{
209195
static_assert(sizeof...(Values) == sizeof...(OtherValues), "compatible constant batches");
210196
return {};
@@ -255,16 +241,9 @@ namespace xsimd
255241
constexpr bool operator()(T x, T y) const { return x <= y; }
256242
};
257243

258-
template <class F, class SelfPack, class OtherPack, std::size_t... Indices>
259-
static constexpr batch_bool_constant<T, A, F()(std::tuple_element<Indices, SelfPack>::type::value, std::tuple_element<Indices, OtherPack>::type::value)...>
260-
apply_bool(detail::index_sequence<Indices...>)
261-
{
262-
return {};
263-
}
264-
265244
template <class F, T... OtherValues>
266245
static constexpr auto apply_bool(batch_constant<T, A, Values...>, batch_constant<T, A, OtherValues...>)
267-
-> decltype(apply_bool<F, std::tuple<std::integral_constant<T, Values>...>, std::tuple<std::integral_constant<T, OtherValues>...>>(detail::make_index_sequence<sizeof...(Values)>()))
246+
-> batch_bool_constant<T, A, F()(Values, OtherValues)...>
268247
{
269248
static_assert(sizeof...(Values) == sizeof...(OtherValues), "compatible constant batches");
270249
return {};

0 commit comments

Comments
 (0)