web-dev-qa-db-ja.com

N番目のタイプの可変個引数テンプレートテンプレートを入手しますか?

N番目のタイプの可変個引数テンプレートテンプレートを取得するにはどうすればよいですか?例えば

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

};
32
user1899020

std::Tupleを使用できます:

#include<Tuple>

template<typename... Args>
class MyClass
{
    typename std::Tuple_element<0, std::Tuple<Args...> >::type mA;
};
36
zch

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