如何解压缩类型定义的类型?

时间:2014-05-19 05:36:22

标签: c++ templates c++11 variadic-templates

例如

struct A { typedef int Type; }
struct B { typedef float Type; }

template<class... Ts>
struct C
{
    typedef tuple<Ts::Type...> TupleType; // comilation error: parameter pack 
                                          // expects a type template argument
};

如何解压缩类型定义的类型?

1 个答案:

答案 0 :(得分:6)

您需要typename

typedef tuple<typename Ts::Type...> TupleType;

请注意,这与您处理参数包的事实无关。出于与往常一样的原因,您需要typename。事实上,如果你有例如

template<class T>
struct D {
    typedef vector<typename T::type> VectorType;
};

这里也需要typename