声明将字符串映射到模板的 unordered_map 时出错

Error in declaring unordered_map which maps string to a template

template<typename T>
struct hash;

template<typename T> class WUG{
    public:
        WUG(){
            unordered_map<string,typename T,hash> vertexmap; //Problem
        }
};

我在这段代码中遇到了一些错误,但实际上并没有告诉我任何问题。我应该如何正确申报?

我收到的错误消息是:
[错误] 模板参数 2 无效
[错误] 模板参数 5 无效

您有 using namespace std;std 命名空间导入所有名称,包括 std::hash,修复:

struct MyHash;

template <typename T>
class WUG {
public:
  WUG() {
    unordered_map<string, T, MyHash> vertexmap; //Problem
  }
};

或使用标准哈希:

template <typename T>
class WUG {
public:
  WUG() {
    unordered_map<string, T> vertexmap; //Problem
  }
};