Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengisytiharkan Pembina Templat Kelas dengan Betul dalam C 20?

Bagaimana untuk Mengisytiharkan Pembina Templat Kelas dengan Betul dalam C 20?

Patricia Arquette
Patricia Arquetteasal
2024-11-25 18:00:191032semak imbas

How to Correctly Declare Class Template Constructors in C  20?

Mengatasi Parameter Templat Berlebihan dalam Pembina Templat Kelas dalam C 20

Dalam C 20, pengisytiharan pembina templat kelas telah melalui proses yang halus tetapi perubahan yang memberi kesan. Sebelum ini, pembina untuk templat kelas secara pilihan boleh memasukkan senarai parameter templat dalam pengisytiharnya, seperti yang dilihat dalam coretan kod berikut:

template<typename T>
struct S {
    S<T>();
};

Amalan ini, bagaimanapun, kini ditamatkan dalam C 20. Kod di atas akan kini mengakibatkan ralat pengkompil dalam trunk gcc dengan -std=c 20. Walau bagaimanapun, ia masih akan menyusun dalam trunk clang dengan yang sama standard.

Rasional untuk Perubahan

Pengalihan keluar parameter templat berlebihan dalam pembina templat kelas menangani potensi sumber ralat. Dengan menghendaki penggunaan eksplisit nama kelas yang disuntik sebaliknya, niat mudah dikekalkan apabila mengisytiharkan pembina dalam templat kelas.

Kesan pada Kod Sedia Ada

Perubahan ini mungkin mempunyai implikasi untuk pangkalan kod sedia ada yang bergantung pada sintaks yang sah sebelum ini. Kod C 2017 yang sah seperti contoh di atas mungkin tidak lagi disusun di bawah standard C 20.

Resolusi untuk Kod Terjejas

Untuk menampung perubahan ini, sintaks alternatif berikut boleh digunakan:

template<typename T>
struct S {
    S();  // Constructor declaration using the injected class name
};

Sebagai alternatif, jika hujah templat tertentu diperlukan, pemuatan berlebihan pembina boleh digunakan:

template<typename T>
struct S {
    S<T>();  // Constructor declaration with explicit template arguments
    S<int>();  // Overload for specific template argument
};

Dengan mematuhi garis panduan sintaks ini, pangkalan kod boleh mengekalkan keserasian dengan standard C 20 yang dikemas kini.

Atas ialah kandungan terperinci Bagaimana untuk Mengisytiharkan Pembina Templat Kelas dengan Betul dalam C 20?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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