Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggelung Dengan Betul Melalui Pek Parameter C Menggunakan Pengembangan Pek?
Menggelung pada Pek Parameter dengan Peluasan Pek
Dalam coretan kod yang disediakan, anda berhasrat untuk menggelung melalui pek parameter panjang berubah-ubah menggunakan sintaks pengembangan pek. Walau bagaimanapun, kod tersebut gagal untuk menyusun dengan ralat "pek parameter mesti dikembangkan dalam konteks ini."
Untuk menyelesaikan isu ini, anda perlu meletakkan pengembangan pek dalam konteks yang dibenarkan. Satu lokasi yang sesuai adalah dalam senarai braced-init-. Pertimbangkan kod yang diubah suai berikut:
template<typename... Args> static void foo2(Args &&... args) { int dummy[] = { 0, ( (void) bar(std::forward<Args>(args)), 0) ... }; }
Begini cara ia berfungsi:
Dengan pengubahsuaian ini, kod akan berjaya menyusun dan menggelung pada pek parameter.
C 17 Ungkapan Lipat
Dalam C 17, anda boleh memudahkan kod menggunakan ungkapan lipatan:
((void) bar(std::forward<Args>(args)), ...);
Ungkapan ini mengembangkan pek dan menggunakan operasi yang ditentukan (dalam kes ini, memanggil bar()) kiri-ke-kanan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggelung Dengan Betul Melalui Pek Parameter C Menggunakan Pengembangan Pek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!