Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <tuple>
- template <typename... types1_t, typename... types2_t, typename cmp>
- class tuple_merge<std::tuple<types1_t...>, std::tuple<types2_t...>, cmp> {
- template <typename T1, typename T2, typename... Args>
- struct merge_helper {
- using type = typename merge_helper<T1, typename std::tuple<Args...>, Args...>::type;
- };
- template <typename... Args>
- struct merge_helper<std::tuple<>, std::tuple<Args...>> {
- using type = std::tuple<Args...>;
- };
- template <typename T1, typename T2, typename... Args>
- struct merge_helper<std::tuple<T1, types1_t...>, std::tuple<T2, types2_t...>, Args...> {
- using next_type = typename std::conditional_t<cmp::template cmp<T1, T2>(), std::tuple<T1>, std::tuple<T2>>;
- using type = typename merge_helper<std::tuple<types1_t...>, std::tuple<types2_t...>, Args..., next_type>::type;
- };
- public:
- using type = typename merge_helper<std::tuple<types1_t...>, std::tuple<types2_t...>>::type;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement