从类型列表创建元组

时间:2018-05-08 08:48:58

标签: c++ templates boost tuples fusion

我有一个带有以下语义的旧代码:

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]> );

可行吗?怎么做?

0 个答案:

没有答案