gpt4 book ai didi

c++ - 包含 std::function 和 std::function 的映射

转载 作者:太空宇宙 更新时间:2023-11-04 14:55:59 27 4
gpt4 key购买 nike

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

首先,以这种方式存储函数安全吗?其次,如果是这样,语法是什么? (从映射中检索函数时,会知道该函数是一元函数还是零元函数。)如果以上都不是,那么合理的替代方法是什么?指针扼杀了 lambda 的想法,对吧……

C++11 没问题。

最佳答案

一种替代方法是将 nullary 函数包装在一个包装器 lambda 中,该包装器 lambda 接受一个参数,不对其进行任何操作,并且只调用包装后的函数。那么 map 中的所有内容都是一元函数。

当然,如果您在检索时知道函数是什么类型(我想您必须知道,否则就没用了!),那么为什么不只使用两个映射呢?

关于c++ - 包含 std::function<T()> 和 std::function<T(int)> 的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14165105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com