Đây là thành ngữ trong câu hỏi:Làm thế nào để gọi thành ngữ của việc sử dụng một mảng để áp dụng một chức năng để một gói variadic
template<typename... T>
void f(T... t) {
int temp[] = {(g(t), 0)...};
}
này sẽ được biên dịch như g(t0); g(t1); ...
, trật tự của chức năng cuộc gọi được đảm bảo bởi C + +11 [dcl.init.list]/4.
Phiên bản tốt hơn sử dụng std::initializer_list
thay vì mảng, nhưng không quan trọng ở đây.
Câu hỏi đặt ra là: chúng ta nên gọi thành ngữ này như thế nào?
UPD:
Về cơ bản, đó là thành ngữ mà chúng ta nên tư vấn cho những người sử dụng nó thay vì đệ quy, tức là để thay thế hai quá tải
void f() {}
void f(H head, T... tail) { g(head); f(tail...); }
với single
void f(T... t) { int temp[]{(g(t), 0)...}; }
Tất nhiên chúng ta có thể gọi nó là "Một thành ngữ sẽ được thay thế bởi Fold Expressions" nhưng tôi hy vọng có một thuật ngữ thích hợp cho nó.
Btw, trong C++ 1Z điều này có lẽ sẽ được thay thế bởi [Gấp Expressions] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4295.html) – Abyx
"gói mở rộng" dường như bao gồm nó, có? –
@ Cheersandhth.-Alf, cảm ơn, đã sửa. Không, nó không chỉ là một "gói mở rộng" - sử dụng mảng đóng một phần quan trọng ở đây. Đó là kinda "này idion vs đệ quy" điều – Abyx