Rumah >pembangunan bahagian belakang >C++ >Mengapakah Menggunakan Parameter Rujukan `std::array` dalam Fungsi C Menghalang Penilaian Ungkapan Malar?
Parameter Rujukan dan Ungkapan Malar
Dalam kod C yang disediakan, fungsi concatenate menerima dua parameter rujukan jenis std::array. Walau bagaimanapun, ralat yang dihadapi semasa penyusunan berkaitan dengan fungsi ahli saiz tatasusunan, yang tidak dianggap sebagai ungkapan malar kerana sifat rujukannya.
Menurut piawaian C, teras ungkapan malar ditakrifkan sebagai ungkapan yang tidak menilai kepada:
Ungkapan id (iaitu, rujukan) kepada pembolehubah atau ahli data jenis rujukan, melainkan rujukan:
Dalam kes ini, parameter rujukan kepada tatasusunan tidak memenuhi mana-mana kriteria ini. Tanpa pemulaan sebelumnya, rujukan tidak boleh dinilai sebagai ungkapan malar.
Oleh itu, oleh kerana fungsi ahli saiz dipanggil pada parameter rujukan (iaitu, data1.size()), ia tidak boleh dianggap sebagai ungkapan malar, yang membawa kepada ralat penyusunan.
Untuk menyelesaikan isu ini, disyorkan untuk menggunakan terus parameter templat S1 dan S2 untuk menentukan saiz tatasusunan hasil dan bukannya bergantung pada fungsi ahli saiz parameter rujukan:
auto result = std::array<uint8_t, S1 + S2>{};
Atas ialah kandungan terperinci Mengapakah Menggunakan Parameter Rujukan `std::array` dalam Fungsi C Menghalang Penilaian Ungkapan Malar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!