Pregunta

Es posible iterar sobre una tupla de impulso o STD, pero ¿puedo iterar en un orden determinado en tiempo de ejecución, mientras conserva la información de tipo?

Supongamos que mi tupla estaba llena de objetos de 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;
}

Me gustaría poder atravesar la lista de Foo tipos, llamando a su doit métodos, pero en un orden arbitrario definido por, por ejemplo, el valor del rank miembro.

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top