這裏的代碼是 return Pair<T, U> (f, s)。
Pair<T, U> (f, s)是調用構造函數生成壹個匿名對象。這個對象是語法臨時生成。這類臨時性質的匿名對象是不允許加引用的。
例如:
Pair<int, double> a =Pair<int, double>(20, 1.782); //允許。
Pair<int, double>& a =Pair<int, double>(20, 1.782); //不允許。
2 cout << mp("hello", 19) << endl;//使用引用有問題, 為什麽
所有模版是進行類型展開。
“hello”屬於靜態常量,其類型是char[6]。
我們把代碼做語法展開,數組的引用?char[6]的引用如何表示?
語法上基本類型的數組根本沒有引用這種語法。
所以這裏可以改成字符傳對象來處理:
cout << mp(string("hello"), 19) << endl;