Моя функция шаблона:
template<typename TList, typename TItem>
void setIndex(TList &list, QString &selectedId)
{
typename QList<TItem>::iterator iter;
for (iter = list.begin(); iter != list.end(); iter++){
if(iter->id() == selectedId){
m_curItemIdx = iter - list.begin();
break;
}
}
}
Я пытался позвонить
setIndex<>(list, selectedId);
Но этот вызов делает ошибку.
error: no matching member function for call to 'setIndex' (...)
note: candidate template ignored: couldn't infer template argument 'TItem'
Итак, я попытался
setIndex<QList<Item>, Item>(list, selectedId);
Тогда это сработало. Тем не менее, я не совсем понимаю, почему первый отказал.
(правка)
В случае другой функции
template<typename TList, typename TItem>
void addItem(TList &list, TItem &item)
{
beginInsertRows(QModelIndex(), rowCount(), rowCount());
list << item;
endInsertRows();
}
Для этой функции
addItem<>(list, item)
работал. Я не suer, что имеет значение