我认为答案是否定的,但我只是想确定一下。
如果我将 std::function
作为函数的参数,传入 boost::bind
是否有任何问题,反之亦然?
编辑:
我发现当你包含 boost\bind.h 时,boost::bind 使用的占位符被直接导入到命名空间中,并且它们与 std::bind 不兼容。对于 std::bind,您必须显式引用占位符,如下所示:std::placeholders::_1,或执行一些其他类型定义或使用魔法使它们同时可用。
最佳答案
没有。 std::
(和boost::
)function
的全部目的是它们可以接受任何 函数对象可以使用正确的签名调用它——包括 lambda、仿函数和任何类型绑定(bind)的结果。他们不关心你的函数对象来自哪里或者它是什么类型。
你甚至可以将它们相互绑定(bind),虽然我不太确定你为什么想要这样做。
关于c++ - 混用 std: :'s and boost::' s::bind 和::function 会导致问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12235598/