从所有包元素的特定成员中提取参数包

问题描述 投票:1回答:1

我猜这是相当简单的,只是无法弄清楚如何做到 - 假设作为参数传入的每个类型都有一个名为't'的成员typedef,我怎么能成为该成员的元组?

#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;
}
c++11 variadic-templates
1个回答
0
投票

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

Ts::t是一个dependent name

要声明依赖名称是一种类型,您必须在它之前使用typename关键字。

现在你知道为什么typename Ts::t...工作,而Ts::t...没有。

© www.soinside.com 2019 - 2024. All rights reserved.