如果我使用函数指针作为值对,我会遇到 stl::pair 问题 2051 吗?

Am I hitting the stl::pair issue 2051 if I use a function pointer as the value a pair?

我想要一个 std::unordered_map<std::string,MyClass*()> 变量。但是 - 当我尝试实例化它时,我在内部收到一条错误消息,本质上是:

/usr/include/c++/4.9/bits/stl_pair.h(102): error: a function type is not allowed here
          detected during:
            instantiation of class "std::pair<_T1, _T2> [with _T1=const std::string, _T2=MyClass *()]" 

我很确定这不是我的错误。我浏览了该站点并注意到 link 到 LWG issue 2051 使 std::pair 过于严格。这真的是我所看到的吗?如果是这样,我应该怎么做才能解决它?使用包装器 class 没有数据,也许 operator()std::function?

如果你想要一个从字符串到 MyClass 指针的映射,你必须声明:

 std::unordered_map<std::string,MyClass*> x;

但是如果你想要映射到一个函数指针到一个函数返回一个指向MyClass的指针,你可以考虑:

std::unordered_map<std::string,MyClass*(*)()> x;