C++ 如果我使用函数指针作为对的值,我是否遇到了stl::pair问题2051?

C++ 如果我使用函数指针作为对的值,我是否遇到了stl::pair问题2051?,c++,c++-standard-library,std-pair,keyvaluepair,C++,C++ Standard Library,Std Pair,Keyvaluepair,我想要一个std::unordered_map变量。但是-当我尝试实例化它时,我得到了一条错误消息,在内心深处,它本质上是: /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=co

我想要一个
std::unordered_map
变量。但是-当我尝试实例化它时,我得到了一条错误消息,在内心深处,它本质上是:

/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 *()]" 
/usr/include/c++/4.9/bits/stl_pair.h(102):错误:此处不允许函数类型
在以下期间检测到:
类“std::pair[with _T1=const std::string,_T2=MyClass*()”的实例化
我很确定这不是因为我的错误。我浏览了整个网站,发现了一个链接
使
std::pair
过于严格。这真的是我看到的吗?如果是这样,我应该做些什么来解决这个问题?使用无数据的包装类和
运算符()
可能吗
std::function

如果要将字符串映射到
MyClass
指针,必须声明:

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

如果要将字符串映射到
MyClass
指针,必须声明:

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

为了清楚起见,您想从字符串映射到指针,映射到不带参数并返回指向MyClass的指针的函数?如果是这样的话,那么将第二个参数改为
MyClass*(*)()
我看不出2051问题之间有什么关系我认为函数容器是不合法的-[container.requirements.general]说它包含存储对象。因此,要实现函数容器,实际上必须有函数指针容器(或封装函数指针的类,如
std::function
,或functor对象)。@M.M:修复了这个问题。现在我要去看看我的代码中是否有这个问题。你的错误消息与你的代码不一致<代码>\u T2在更新的代码中不会是
MyClass*()
。如果你仍然有问题,那么发布一个MCVE。为了清楚起见,您想从字符串映射到指针,映射到不带参数并返回指向MyClass的指针的函数?如果是这样的话,那么将第二个参数改为
MyClass*(*)()
我看不出2051问题之间有什么关系我认为函数容器是不合法的-[container.requirements.general]说它包含存储对象。因此,要实现函数容器,实际上必须有函数指针容器(或封装函数指针的类,如
std::function
,或functor对象)。@M.M:修复了这个问题。现在我要去看看我的代码中是否有这个问题。你的错误消息与你的代码不一致<代码>\u T2在更新的代码中不会是
MyClass*()
。如果你仍然有问题,那么发布一个MCVE。将检查这是否是问题所在,或者我是否只是错误引用了定义(我删除了一些
using=
)。将检查这是否是问题所在,或者我是否只是错误引用了定义(我删除了一些
using=
)。