Mengulangi Senarai Argumen Templat Variadic
Senarai hujah templat variadic yang dibungkus, walaupun berkuasa, boleh menimbulkan cabaran dalam mengakses hujah individu. Isu ini amat relevan apabila seseorang perlu mengulangi senarai tersebut untuk mengasingkan hujah berdasarkan jenisnya.
Untuk mencapai matlamat ini, satu pilihan ialah memanfaatkan ungkapan lipatan yang diperkenalkan dalam C 17. Dengan menggunakan boleh panggil, a ungkapan lambda dalam kes ini, seseorang boleh mentakrifkan gelung yang berulang melalui argumen dan melaksanakan operasi yang diingini.
Berikut ialah contoh:
<code class="cpp">#include <iostream> template <class ... Ts> void Foo(Ts && ... inputs) { int i = 0; // Lambda that executes for each passed argument. ([&] { ++i; std::cout << "input " << i << " = " << inputs << std::endl; }(), ...); } int main() { Foo(2, 3, 4u, (int64_t)9, 'a', 2.3); return 0; }</code>
Dalam contoh ini, lambda adalah sangat ringkas, tetapi operasi yang lebih kompleks boleh dilakukan dalam gelung. Adalah penting untuk ambil perhatian bahawa teknik ini memerlukan C 17 atau lebih baru.
Untuk senario di mana pemulangan atau keluar daripada lelaran diperlukan, cuba/buang dan ubah/jika pendekatan suis tersedia tetapi harus dianggap sebagai bau kod dan digunakan hanya jika tidak dapat dielakkan.
Atas ialah kandungan terperinci Bagaimana untuk Mengulangi Senarai Argumen Templat Variadik dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!