Создание кортежей из списка типов - PullRequest
0 голосов
/ 08 мая 2018

У меня есть старый код со следующей семантикой:

template <class Columns>
void doThings( Columns&& cols )
{
   // internal cols processing..
}

Вызывающая сторона может быть:

doThings( boost::fusion::vector_tie<anyVar1, anyVar2> );
doThings( boost::fusion::vector_tie<anyVar1, anyVar2> );
doThings( boost::fusion::make_tuple());  // etc..

Мне нужно провести рефакторинг doThings, чтобы принять список типов? , чтобы создать вектор кортежей внутри - скрыть это во внутренней реализации. это будет зависеть от некоторого внутреннего типа.

Например, я хочу сделать что-то вроде этого (список типов уже известен):

template <class Types>
void doThings( Types&& types)
{
   // pseudo code
   auto internalVt = boost::fusion::vector_tie(types.begin(), types.end(),
         [](Type& t) 
         {
             return makeMyType(t); 
         });
    };

// pseudo code
int anyVar1;
char anyVar2[100];

doThings( some_container<anyVar1, anyVar2> );
//or any type
doThings( some_container<int, char[100]> );

Это выполнимо? Как это можно сделать?

...