我想我可以有一個指針指向一個完全專業的模板功能,但下面的代碼不編譯(MSVC2012)unordered_map構造錯誤(equal_to模板函數)
#include <iostream>
#include <string>
#include <unordered_map>
#include <algorithm>
using namespace std;
unsigned long hashing_func(string key)
{
unsigned long hash = 0;
for(int i=0; i<key.size(); i++)
{
hash += (71*hash + key[i]) % 5;
}
return hash;
}
bool key_equal_fn2(string t1, string t2)
{
return t1 == t2;
}
template<class T> bool key_equal_fn(T t1, T t2)
{
return t1 == t2;
}
template <> bool key_equal_fn<string>(string t1, string t2)
{
return !(t1.compare(t2));
}
int main()
{
unordered_map<string, string>::size_type n = 5;
unordered_map<string, string> mymap(n, (const std::hash<string> &)hashing_func, (const std::equal_to<string> &)(key_equal_fn<string>)) ;
mymap["paul"] = "jenna";
mymap["frank"] = "ashley";
return 0;
}
構造線返回以下錯誤:
error C2440: 'type cast' : cannot convert from 'bool (__cdecl *)(T,T)' to 'const std::equal_to<_Ty> &'
跳過類型轉換。 – 2013-04-04 10:54:13
無法將參數3從'bool(__cdecl *)(T,T)'轉換爲'const std :: equal_to <_Ty>&' – Paul 2013-04-04 10:57:19
**絕不**使用C風格轉換。 – 2013-04-04 11:24:07