実行時に定義された順序でC ++タプルを横断する
-
30-10-2019 - |
質問
ブーストまたはSTDタプルを反復することは可能ですが、タイプ情報を保持しながら、実行時に決定された順序で反復することはできますか?
私のタプルがタイプのオブジェクトで満たされているとします 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
メンバー。
正しい解決策はありません
所属していません StackOverflow