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
Lepaskan: 2024-12-23 01:10:08
asal
772 orang telah melayarinya

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

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!

sumber:php.cn
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