Oto idiom w pytaniu:Jak wywołać idiom za pomocą tablicy, aby zastosować funkcję do zmiennej liczbie argumentów opakowanie
template<typename... T>
void f(T... t) {
int temp[] = {(g(t), 0)...};
}
ta zostanie skompilowany jako g(t0); g(t1); ...
, kolejność wywołań funkcji jest gwarantowana przez C + +11 [dcl.init.list]/4.
Lepsza wersja używa std::initializer_list
zamiast tablicy, ale tutaj nie ma to znaczenia.
Pytanie brzmi: jak nazwać ten idiom?
Upd:
Zasadniczo, jest to idiom, który powinniśmy doradzać ludziom, aby używać go zamiast rekurencji, czyli zastąpienie dwóch przeciążeń
void f() {}
void f(H head, T... tail) { g(head); f(tail...); }
z pojedynczym
void f(T... t) { int temp[]{(g(t), 0)...}; }
Oczywiście możemy to nazwać "idiomem, który zostanie zastąpiony przez Fold Expressions", ale mam nadzieję, że istnieje odpowiedni termin dla to.
okazji, C++ 1Z ten prawdopodobnie zostanie zastąpiony [Fold wyrażeń] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4295.html) – Abyx
"ekspansja pakietu" wydaje się to pokrywać, tak? –
@ Cheersandhth.-Alf, dzięki, naprawione. Nie, to nie jest tylko "rozszerzenie paczki" - używanie tej tablicy odgrywa tu kluczową rolę. Jest to rodzaj "idiona kontra rekursja", rzecz. – Abyx