在不使用 Boost 的情况下,在以下代码中编写 readvals 函数的最佳方法是什么?基本上,它应该得到一个元组,调用它的元素的特定函数并再次将生成的结果作为元组返回。
是否有任何基于 C++0X 的元组 Functor 定义库?
template <class T>
struct A
{
A(T _val):val(_val){}
T ret() {return val;}
T val;
};
template <typename... ARGS>
std::tuple<ARGS...> readvals(std::tuple<A<ARGS>...> targ)
{
//???
}
int main(int argc, char **argv)
{
A<int> ai = A<int>(5);
A<char> ac = A<char>('c');
A<double> ad = A<double>(0.5);
std::tuple<A<int>,A<char>,A<double>> at = std::make_tuple(ai,ac,ad);
// assuming proper overloading of "<<" for tuples exists
std::cout << readvals<int,char,double>(at) << std::endl;
// I expect something like (5, c, 0.5) in the output
return 0;
}
我发现关于 SO 的问题部分解决了这个问题(元组解包、迭代元组元素等),但在我看来,与将所有这些解决方案放在一起相比,应该有一个更简单的解决方案。