所以我是 boost 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 来完成,但我想要一个元组类型,而不是类型 vector 。 (实际上不必使用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++ - 转换元组类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9123712/