Mencipta semula Fungsi make_unique dalam C 11
Piawaian C 11 memperkenalkan fungsi berkuasa, make_unique, untuk mencipta penunjuk unik. Walau bagaimanapun, sesetengah mungkin menghadapi isu pengkompil mereka tidak menyokong fungsi ini. Artikel ini menyediakan penyelesaian untuk melaksanakan make_unique dalam C 11.
Mengikut soalan, prototaip fungsi make_unique ialah:
<code class="cpp">template< class T, class... Args > unique_ptr<T> make_unique( Args&&&... args );</code>
Kod berikut menyediakan pelaksanaan make_unique:
<code class="cpp">template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args) { return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); }</code>
Pelaksanaan ini menggunakan std::forward<> fungsi untuk memastikan bahawa pemajuan hujah berlaku dengan betul untuk semua jenis argumen, termasuk rujukan dan rujukan nilai.
Perhatikan bahawa jika pengkompil anda menyokong C 11 tetapi bukan fungsi make_unique, anda masih boleh menggunakan pelaksanaan ini sebagai penyelesaian. Sebagai alternatif, jika anda mempunyai akses kepada pengkompil yang menyokong C 14 atau lebih baru, anda boleh memanfaatkan fungsi std::make_unique standard untuk tujuan ini.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan `make_unique` dalam C 11 Apabila Pengkompil Anda Tidak Menyokongnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!