C++ 获取第n种类型的可变模板?

C++ 获取第n种类型的可变模板?,c++,variadic-templates,C++,Variadic Templates,如何获得第n种类型的可变模板?比如说 template<typename... Args> class MyClass { Args[0] mA; // This is wrong. How to get the type? }; 模板 类MyClass { Args[0]mA;//这是错误的。如何获取类型? }; 您可以使用std::tuple: #include<tuple> template<typename... Args> class

如何获得第n种类型的可变模板?比如说

template<typename... Args>
class MyClass
{
    Args[0] mA; // This is wrong. How to get the type?

};
模板
类MyClass
{
Args[0]mA;//这是错误的。如何获取类型?
};

您可以使用
std::tuple

#include<tuple>

template<typename... Args>
class MyClass
{
    typename std::tuple_element<0, std::tuple<Args...> >::type mA;
};
#包括
模板
类MyClass
{
typename std::tuple_元素::类型mA;
};

如果您想要不使用
std::tuple的东西

template<std::size_t N, typename T, typename... types>
struct get_Nth_type
{
    using type = typename get_Nth_type<N - 1, types...>::type;
};

template<typename T, typename... types>
struct get_Nth_type<0, T, types...>
{
    using type = T;
};
模板
结构获取第n个类型
{
使用type=typename获取第n个类型::type;
};
模板
结构获取第n个类型
{
使用类型=T;
};

模板
使用get=typename get\n\u type::type;
模板
类MyClass
{
获得硕士学位;
};

检查std::tuple实现(使用混合模板的继承)
template<std::size_t N, typename... Args>
using get = typename get_Nth_type<N, Args...>::type;

template<typename... Args>
class MyClass
{
    get<0, Args...> mA;
};