Вывести пакет параметров из определенного элемента всех элементов пакета - PullRequest
1 голос
/ 14 марта 2019

Полагаю, это довольно просто, просто не могу понять, как это сделать. Предполагая, что каждый тип, передаваемый в качестве параметра, имеет член 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 голосов
/ 14 марта 2019

Параметры шаблона класса std::tuple являются типами.

Ts::t является dependent name.

Чтобы объявить, что зависимое имя является типом, вы должны использовать ключевое слово typename перед ним.

Теперь вы знаете, почему typename Ts::t... работает, а Ts::t... - нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...