Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Melaksanakan `make_unique` dalam C 11 Apabila Pengkompil Anda Tidak Menyokongnya?

Bagaimana untuk Melaksanakan `make_unique` dalam C 11 Apabila Pengkompil Anda Tidak Menyokongnya?

Patricia Arquette
Lepaskan: 2024-11-01 10:25:02
asal
769 orang telah melayarinya

How to Implement `make_unique` in C  11 When Your Compiler Doesn't Support It?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan