如果我使用函数指针作为值对,我会遇到 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;
我想要一个 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;