Tại sao là sản phẩm của code này:chức năng Chuyên mẫu với nhiều loại tài liệu tham khảo
#include <iostream>
template<typename T> void f(T param)
{
std::cout << "General" << std::endl ;
}
template<> void f(int& param)
{
std::cout << "int&" << std::endl ;
}
int main()
{
float x ; f (x) ;
int y ; f (y) ;
int& z = y ; f (z) ;
}
là
chung
chung
chung
Người thứ ba là đáng ngạc nhiên vì chức năng chuyên biệt chính xác f hoặc int&
Chỉnh sửa: Tôi biết rằng quá tải có thể là giải pháp thích hợp. Tôi chỉ muốn học logic đằng sau nó.
Có lẽ vì const int & được ưa chuộng để int &? – Septagram
@Septagram: const int &? –
Tôi không biết nếu nó giúp, nhưng nếu bạn thay đổi mẫu để chấp nhận một 'T &', thì cả hai 'f (y)' và 'f (z)' gọi phiên bản 'int &'. –