例如
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
};
如何解压缩类型定义的类型?
答案 0 :(得分:6)
您需要typename
。
typedef tuple<typename Ts::Type...> TupleType;
请注意,这与您处理参数包的事实无关。出于与往常一样的原因,您需要typename
。事实上,如果你有例如
template<class T>
struct D {
typedef vector<typename T::type> VectorType;
};
这里也需要typename
。