boost または std タプルを反復することは可能ですが、型情報を保持しながら、実行時に決定された順序で反復することはできますか?
私のタプルが type のオブジェクトで満たされているとしますFoo
:
#include <tuple>
using namespace std;
template <typename ...> void bar(); // Definition omitted.
template <typename ... Ts>
struct Foo {
void doit() { bar<Ts...>(); }
int rank;
};
int main(int argc, char *argv[])
{
auto tup = make_tuple(Foo<int,double>(),
Foo<bool,char,float>());
get<0>(tup).rank = 2;
get<1>(tup).rank = 1;
return 0;
}
Foo
タイプのリストをトラバースして、それらのメソッドを呼び出すことができるようにしたいと考えてdoit
いますが、rank
メンバーの値などによって定義された任意の順序で行います。