Rumah >pembangunan bahagian belakang >C++ >Mengapa Potongan Jenis Gagal untuk Templat TMap Saya dalam Panggilan Fungsi Ini?

Mengapa Potongan Jenis Gagal untuk Templat TMap Saya dalam Panggilan Fungsi Ini?

Susan Sarandon
Susan Sarandonasal
2024-12-23 01:10:08752semak imbas

Why Does Type Deduction Fail for My TMap Template in This Function Call?

Jenis Kegagalan Potongan dalam Templat TMap

Sebagai tindak balas kepada pertanyaan berkenaan ralat potongan semasa menggunakan fungsi ujian, isu itu terletak dalam konteks yang tidak boleh disimpulkan di mana parameter templat T dibuat seketika.

Dalam fungsi ujian, pengkompil cuba untuk menyimpulkan jenis T berdasarkan jenis parameter tmap_. Walau bagaimanapun, memandangkan mungkin terdapat pelbagai pengkhususan templat TMap untuk jenis yang berbeza (cth., TMap dan TMap), pengkompil tidak boleh menentukan jenis T secara unik semata-mata dengan memeriksa jenis tmap_.

Pertimbangkan satu hipotesis pengkhususan:

template <>
struct TMap<SomeType>
{
    typedef std::map<double, double> Type;
};

Dalam senario ini, TMap::Type akan bersamaan dengan std::map. Walau bagaimanapun, jika pengkhususan lain wujud untuk OtherType, yang juga mentakrifkan jenisnya sebagai std::map, pengkompil tidak boleh membuat kesimpulan jenis T yang sepadan apabila berhadapan dengan std::map jenis tmap_.

Ketiadaan maklumat yang tersedia kepada pengkompil untuk mewujudkan korespondensi unik antara jenis tmap_ dan jenis T membawa kepada ralat potongan yang dilaporkan. Untuk menyelesaikan isu ini, jenis T mesti dinyatakan secara eksplisit apabila menggunakan fungsi ujian, memastikan pengkhususan templat yang betul dipilih.

Atas ialah kandungan terperinci Mengapa Potongan Jenis Gagal untuk Templat TMap Saya dalam Panggilan Fungsi Ini?. 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