Desidero preparare l'elenco di coppie di valori dalla struttura utilizzando modelli variadici.Espansione di modelli variadici diversi
#include <vector>
struct foo
{
foo(int a, int b)
: a(a), b(b) {}
int a;
int b;
};
struct Msg
{
std::vector<int> valueArray;
};
template<typename... Args>
Msg func(Args... args)
{
Msg msg;
msg.valueArray = { sizeof...(args), (args.a)..., (args.b)... };
return msg;
}
int main() {
Msg msg = func(foo{1,2}, foo{3,4}, foo{5,6});
}
Messaggio che func restituirà avrà valueArray = [3, 1, 3, 5, 2, 4, 6]
.
C'è un modo semplice per espandere i parametri di misura variadici in un modo, dove valueArray sarà simile a valueArray = [3, 1, 2, 3, 4, 5, 6]
?
Non è possibile assegnare ad array. – chris
Sono stato modificato in vettore, ma questo non ha rivelato questa domanda;) – Xter
Considerando che la tua domanda non utilizza i valori in fase di compilazione, una chiamata a 'std :: sort' dopo aver assegnato i valori codificati non dovrebbe essere? – chris