【发布时间】:2013-01-04 21:15:58
【问题描述】:
我想要一个将字符串键映射到std::function<T()> 或std::function<T(int)> 的映射(但不能同时用于给定键)。我收到一个编译错误,似乎没有std::function<T(...)> 的模板。我希望能够使用 lambdas 作为值。
首先,以这种方式存储函数是否安全?其次,如果是这样,语法是什么? (从地图中检索到该函数是一元还是零元时,将知道它。)如果以上都不是,那么合理的替代方案是什么?指针扼杀了 lambda 的想法,对吧……
C++11 没问题。
【问题讨论】:
-
@OliCharlesworth,这是一条出路!在某些时候,我希望能够隐藏这一点,例如,地图类中只有一个 get 方法。但我当然可以解决它。
-
为什么不只有两个容器?由于无论如何您都必须进行一些检查,以便知道如何调用该函数,因此您不妨将这两种函数分开来进行检查。
标签: c++ map c++11 stdmap std-function