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に関する質問を見つけましたが、そのようなすべてのソリューションをまとめるよりも簡単なソリューションがあるはずです。