7 #ifndef _FCITX_UTILS_COMBINETUPLES_H_ 8 #define _FCITX_UTILS_COMBINETUPLES_H_ 14 template <
typename...>
19 using type = std::tuple<>;
22 template <
typename _T1,
typename... _Rem>
27 template <
typename... _Ts>
29 using type = std::tuple<_Ts...>;
32 template <
typename... _T1s,
typename... _T2s,
typename... _Rem>
35 typename CombineTuples<std::tuple<_T1s..., _T2s...>, _Rem...>::type;
38 template <
typename... Args>
39 using CombineTuplesType =
typename CombineTuples<Args...>::type;
44 template <
int N,
int... S>
52 template <
typename... Args,
typename F,
int... S>
54 std::tuple<Args...> &tuple) {
55 return func(std::get<S>(tuple)...);
58 template <
typename... Args,
typename F>
59 auto callWithTuple(F func, std::tuple<Args...> &tuple) {
61 return callWithIndices(func, a, tuple);
65 #endif // _FCITX_UTILS_COMBINETUPLES_H_