下面的代碼拋出2個的編譯器錯誤在VS 2013:語法錯誤識別符 '遊標'
- 模板函數定義拋出
錯誤C2061:語法錯誤:識別符 '
iterator
' - 該模板功能的專業化拋出
錯誤[R C2912:明確的專業化「
double getFillIn<double,double>(fillInOptions,double,std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const _Kty,_Ty>>>>,inputLoader *,va_list)
」不是一個函數模板
任何人都可以請解釋原因的特?我很確定第二個錯誤只是第一個錯誤的結果,但我不明白爲什麼它不能找出iterator
標識符。
#include <map>
template <typename T> class table {
};
template <typename S, typename T>
void f(S s, std::map<S, table<T>*>::iterator it);
嘗試'typename map *> :: iterator'。 –
songyuanyao
我錯了,但'template class lookupTable;'在完全定義'lookupTable'之前'會咬你。關閉主題:交換機中的默認情況不會返回任何內容。對於編譯器警告以及如果一個無效或新的'opt'偷偷進入有點困難的調試很好。 –
user4581301