質問

ブーストまたは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 メンバー。

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top