从所有包元素的特定成员推导出参数包

时间:2019-03-14 13:01:40

标签: c++11 variadic-templates

我猜这很简单,只是想不出该怎么做-假设作为参数传入的每个类型都有一个成员typedef称为“ t”,我该如何构成该成员的元组?

#include <tuple>

template <typename T>
struct A{
  typedef T t;
};

template <typename ...Ts>
struct B{
  std::tuple<Ts::t...> ts; // I want a tuple of Ts::t type...
};

int main()
{
  B<A<int>,A<float>> b;
  return 0;
}

1 个答案:

答案 0 :(得分:0)

类模板std::tuple的参数是类型。

Ts::tdependent name

要声明从属名称是一种类型,必须在其之前使用typename关键字。

现在您知道为什么typename Ts::t...有效而Ts::t...无效的原因。