其他分享
首页 > 其他分享> > c – 转换元组类型

c – 转换元组类型

作者:互联网

所以我是新手来提升MPL,我不知道如何将它与标准类型一起使用.

我想要一个转换这种类型的元函数:

std::tuple<T0, T1, ..., TN>

进入:

std::tuple<
  std::function<T0(std::tuple<T0, T1, ...>, std::tuple<T0, T1, ...>)>,
  std::function<T1(std::tuple<T0, T1, ...>, std::tuple<T0, T1, ...>)>,
  ...,
  std::function<TN(...)>
>

看起来这可以用transform完成,但我想要一个元组类型,而不是类型的向量. (它实际上不必使用MPL,但我想它会更短?)

背景:目前我使用完全通用的类型,如果使用错误,依赖于所有地狱破坏,但我想计算TupleOfFunctions以获得正确的错误.

template<class TupleOfValues, class TupleOfFunctions>
void f(TupleOfValues v, TupleOfFunctions fun)

解决方法:

以下怎么样?

template<typename T> struct transform;
template<typename ...T>
struct transform<std::tuple<T...>> {
  typedef std::tuple<std::function<T(std::tuple<T...>, std::tuple<T...>)>...> type;
};

标签:c,c11,boost,metaprogramming
来源: https://codeday.me/bug/20191008/1872725.html