我有一个带有以下语义的旧代码:
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]> );
可行吗?怎么做?