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

Get the Nth type of variadic template templates?

本文关键字:种类 类型 获取      更新时间:2023-10-16

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

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

您可以使用std::tuple:

#include<tuple>
template<typename... Args>
class MyClass
{
    typename std::tuple_element<0, std::tuple<Args...> >::type 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;
};

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;
};