У меня есть старый код со следующей семантикой:
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]> );
Это выполнимо? Как это можно сделать?