Rumah >pembangunan bahagian belakang >C++ >Mengapa Rentetan Tidak Boleh Digunakan sebagai Parameter Templat Bukan Jenis dalam C ?
Mengapa Parameter Templat Bukan Jenis Tidak Boleh Menjadi Rentetan?
Dalam C , parameter templat bukan jenis mestilah ungkapan kamiran tetap. Walau bagaimanapun, kod di bawah cuba menggunakan std::string sebagai parameter templat bukan jenis:
template <std::string temp> void foo() { // ... }
Ini mengakibatkan ralat pengkompil yang menunjukkan bahawa std::string ialah jenis haram untuk bukan- taip parameter templat.
Sebab sekatan ini ialah ungkapan tidak tetap tidak boleh dihuraikan dan digantikan semasa penyusunan. Mereka boleh berubah semasa masa jalan, yang memerlukan penjanaan templat baharu semasa masa jalan. Memandangkan templat ialah konsep masa kompilasi, ini tidak boleh dilakukan.
Piawaian C 11 secara eksplisit membenarkan hanya jenis tertentu untuk parameter templat bukan jenis:
Atas ialah kandungan terperinci Mengapa Rentetan Tidak Boleh Digunakan sebagai Parameter Templat Bukan Jenis dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!