hash_map 自定义hash函数出错

最近在使用hash_map 的时候发现不能自定义hash 函数,只要这样的话,就会出问题,hash_map, eqstr> day ;但是如果这样的话就不会有问题了,还望大神求解呀 hash_map days;
#include
#include
#include

using namespace std;

struct eqstr //定义比较函数,字符串的比较函数需要单独定义
{
bool operator()(const char* a1, const char* a2) const
{
return strcmp(a1,a2)==0;
}
};

int main()
{
hash_map, eqstr> days;
days["january1"] = 31;
days["january2"] = 41;
days["january3"] = 61;
days["january4"] = 51;

hash_map<const char*, int, hash<const char*>, eqstr>::iterator ite1=days.begin();
hash_map<const char*, int, hash<const char*>, eqstr>::iterator ite2 = days.end();
for (; ite1 != ite2; ++ite1)
{
    cout << ite1->first << endl;
}
system("pause");
return 0;

}


图片说明

参考:https://www.linuxidc.com/Linux/2012-11/73706.htm

这个程序是采用《STL源码剖析》上面的。不过参照楼上的链接定义成类之后就可以 。不知道为什么。