Domanda

È possibile iterare su una spinta o una tupla STD, ma posso iterare in un ordine determinato in fase di esecuzione, pur mantenendo le informazioni di tipo?

Supponiamo che la mia tupla fosse piena di oggetti di tipo 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;
}

Vorrei poter attraversare l'elenco di Foo tipi, chiamando il loro doit metodi, ma in un ordine arbitrario definito, diciamo, dal valore del rank membro.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top