Ecco l'idioma in questione:Come chiamare l'idioma di utilizzare un array per applicare una funzione ad un pacchetto di variadic
template<typename... T>
void f(T... t) {
int temp[] = {(g(t), 0)...};
}
Questo sarà compilato come g(t0); g(t1); ...
, ordine delle chiamate di funzione è garantita da C + 11 [dcl.init.list]/4.
Una versione migliore utilizza std::initializer_list
invece di matrice, ma qui non è importante.
La domanda è: come dovremmo chiamare questo idioma?
Upd:
In sostanza, è il linguaggio che dovremmo consigliare alle persone di usare al posto di ricorsione, ovvero di sostituire due overload
void f() {}
void f(H head, T... tail) { g(head); f(tail...); }
con singolo
void f(T... t) { int temp[]{(g(t), 0)...}; }
Ovviamente possiamo chiamarlo "Un idioma che sarà sostituito dal Fold Expressions" ma spero che ci sia un termine appropriato per esso.
Btw, in C++ 1z questo probabilmente sarà sostituito da [Fold Expressions] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4295.html) – Abyx
"pack expansion" sembra coprirlo, sì? –
@ Cheersandhth.-Alf, grazie, risolto. No, non è solo una "espansione del pacchetto": l'utilizzo dell'array gioca un ruolo chiave qui. È una cosa tipo "questo idion contro la ricorsione" – Abyx