У меня это плохо укладывается в голове
Покажите реализацию
Вот же:
C++ (Qt)
namespace detail
{
template<class, class>
struct merge_helper;
template <class T, class...Types>
struct merge_helper<type_list<Types...>, T>
{
typedef type_list<T, Types...> type;
};
} /* namespace detail */
template <class T, class A, class...Types>
struct merge
{
typedef typename merge<typename detail::merge_helper<T, A>::type, Types...>::type type;
};
template <class T, class A>
struct merge<T, A>
{
typedef typename detail::merge_helper<T, A>::type type;
};
C++ (Qt)
typedef type_list<int, long, double> my_type_list;
std::cout << std::boolalpha << std::is_same<typename merge<my_type_list, bool, std::string>::type, type_list<std::string, bool, int, long, double>>::value << std::endl;