如果我理解正確,在標準庫中,存在以下定義std::sort():
template< class RandomIt >
constexpr void sort( RandomIt first, RandomIt last );
假設我有一個想要排序的向量:
std::vector<int> data {9, 7, 5, 3, 1};
如果是這樣,那我為什么只能寫:
std::sort(data.begin(), data.end());
而不是要求:
std::sort<std::vector<int>::iterator>(data.begin(), data.end());
如果可能的話,有人可以提供一個通用的解釋嗎?我想我肯定見過不止一個這樣的例子,其中模板型別似乎是自動推匯出來的……還是自動推匯出來的……?
uj5u.com熱心網友回復:
還是自動推匯出來的……?
是的。
當模板形參用于函式形參時,模板實參可以從傳遞給函式的實參推匯出來。所以,在這種情況下是從論點和RandomIt推匯出來的。data.begin()data.end()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/433965.html
上一篇:部分模板專業化錯誤
