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 – 错误:已定义类模板


下一篇:MarkDown语法的简单应用