例如有类型
Test<int, double, std::string>
可以萃取出模板参数分别是
int, double, std::string
方法如下
#include <tuple>#include <iostream>template <typename...>struct template_argument_type_traits {};// 因为ClassType是一个模板类,所以用模板的模板参数表示它,即// template <typename...> class ClassType 表示ClassType是一个模板类// 这样才可以在特化的时候为它添加模板参数Args...template <template <typename...> class ClassType, typename... Args>struct template_argument_type_traits<ClassType<Args...>>{template <std::size_t N>using param_type = std::tuple_element_t<N, std::tuple<Args...>>;};