所以我是新手来提升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)
答案 0 :(得分:4)
以下情况如何?
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;
};