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