c++代码片段(四)萃取模板类的模板参数类型

例如有类型

1
Test<int, double, std::string>

可以萃取出模板参数分别是

1
int, double, std::string

方法如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

#include <iostream>

template <typename...>
struct {};


// template <typename...> class ClassType 表示ClassType是一个模板类
// 这样才可以在特化的时候为它添加模板参数Args...
template <template <typename...> class ClassType, typename... Args>
struct <ClassType<Args...>>
{
template <std::size_t N>
using param_type = std::tuple_element_t<N, std::tuple<Args...>>;
};