Получете N-тия тип шаблони с различни шаблони?

Как да получите N-тия тип шаблони с различни шаблони? Например

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

};

person user1899020    schedule 11.04.2013    source източник
comment
Проверете внедряването на std::tuple (използване на наследяване, смесено с шаблони)   -  person lucasmrod    schedule 11.04.2013


Отговори (2)


Можете да използвате std::tuple:

#include<tuple>

template<typename... Args>
class MyClass
{
    typename std::tuple_element<0, std::tuple<Args...> >::type mA;
};
person zch    schedule 11.04.2013

Ако искате нещо, без да използвате 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;
};
person etrusks    schedule 20.06.2016