包含std :: function <T()>和std :: function <T(int)>的map

And*_*rus 0 c++ stdmap map c++11 std-function

我想要一个映射将字符串键映射到a std::function<T()>std::function<T(int)>(但不是两个都给定键)的映射.我得到一个编译错误,似乎没有模板std::function<T(...)>.我希望能够使用lambdas作为值.

首先,以这种方式存储功能是否安全?其次,如果是这样,语法是什么?(当从地图中检索到函数时,函数是一元函数还是无效函数.)如果不是上述函数,那么什么是合理的替代方案?指针杀死了lambda的想法,对...

C++ 11没问题.

Oli*_*rth 5

另一种方法是将nullary函数包装在一个包装器lambda中,该包含一个参数,不对它做任何操作,只是调用包装函数.然后地图中的所有内容都是一元函数.

当然,如果你在检索时知道这个函数是什么类型的(我猜你必须这样做,否则它没用!),那么为什么不使用两个地图呢?