C++ 函數重載解析策略( 三 )

<> 指出,編譯器應該選擇模板函數,此時編譯器會查看調用函數時的實參類型來進行實例化,也屬于模板函數的隱式實例化;第四次調用的 <int> 顯式指出,編譯器應該使用模板函數的 int 實例化版本,此時屬于模板函數的顯式實例化 。
#include <iostream>//函數#1template<class T>T lesser(T a, T b){return a < b ? a : b;}//函數#2int lesser(int a, int b){a = a < 0 ? -a : a;b = b < 0 ? -b : b;return a < b ? a : b;}//函數調用int main(){using namespace std;int m = 20;int n = -30;double x = 15.5;double y = 25.9;//使用#2 , 結果為20cout << lesser(m, n) << endl;//使用#1,double隱式實例化,結果為15.5cout << lesser(x, y) << endl;//使用#1,int隱式實例化,結果為-30cout << lesser<>(m, n) << endl;//使用#1,int顯式實例化 , 結果為15cout << lesser<int>(x, y) << endl;return 0;}【C++ 函數重載解析策略】

推薦閱讀