Оберните каждый элемент пакета параметровariadi c в оболочку и сохраните в std :: tuple - PullRequest
0 голосов
/ 01 августа 2020

Рассмотрим два класса:

struct A {};
struct B {};

И класс:

template<typename... Ts>
struct packed {
   using Tuple = std::tuple<Ts...>;
   Tuple tpl;
};

и

template<typename T>
struct wrapper {
T t;
};

Я бы хотел, чтобы вместо Tuple = std::tuple<Ts...> внутри packed, а скорее кортеж, каждый элемент которого похож на using WrappedTuple = std::tuple<wrapper<T0>, wrapper<T1>, ..., wrapper<TN-1>>;

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

1 Ответ

0 голосов
/ 01 августа 2020

Просто замените wrapper<Ts> на .... Это создает пакет параметров шаблона, в котором каждый элемент wrapper<T>, T - каждый соответствующий тип в пакете Ts.

using Tuple = std::tuple<wrapper<Ts>...>;

( Demo )

...