Rumah >pembangunan bahagian belakang >C++ >Mengapa Potongan Jenis Templat Gagal Apabila Membuat kesimpulan daripada Jenis Ahli?
Kegagalan Potongan dalam Inferens Jenis Templat
Apabila cuba menyimpulkan hujah templat daripada ahli jenis, adalah penting untuk memastikan konteks boleh disimpulkan. Dalam kod yang diberikan, ralat berlaku dalam fungsi ujian apabila pengkompil cuba menyimpulkan hujah templat T daripada nama taip TMap
Kegagalan ini berpunca daripada konsep "konteks tidak boleh ditolak ." Dalam kes ini, jenis ahli TMap
Pertimbangkan pengkhususan hipotesis TMap:
template <> struct TMap<SomeType> { typedef std::map<double, double> Type; };
Jika pengkompil terpaksa menyimpulkan T daripada TMap
Mengkhususkan lagi TMap:
template <> struct TMap<OtherType> { typedef std::map<double, double> Type; };
Keadaan bertambah buruk, seperti yang berikut berlaku:
Memandangkan kekaburan ini, pengkompil tidak boleh menentukan sama ada T ialah SomeType atau OtherType Ia juga tidak boleh menentukan bilangan pilihan yang mungkin atau mengenal pasti pilihan tersebut.
Oleh itu, dalam konteks seperti ini di mana jenis ahli templat tidak mempunyai hubungan langsung dengan hujah templat, potongan hujah templat gagal dan pengkompil menimbulkan ralat.
Atas ialah kandungan terperinci Mengapa Potongan Jenis Templat Gagal Apabila Membuat kesimpulan daripada Jenis Ahli?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!