我认为答案是否定的,但我只想确定。
如果我在函数中有一个std::function
作为参数,传入boost::bind
是否有任何问题,反之亦然?
编辑:
我发现当你包含boost \ bind.h时,boost :: bind使用的占位符直接导入到命名空间中,并且它们与std :: bind不兼容。对于std :: bind,你必须引用显式的占位符,如下所示:std :: placeholders :: _ 1,或者做一些其他的typedef或使用magic来使它们同时可用。
答案 0 :(得分:10)
没有。 std::
(和boost::
)function
的整个目的是,他们可以接受任何函数对象,可以使用正确的签名调用 - 包括lambda,functor ,以及任何类型绑定的结果。它们并不关心函数对象的来源或类型。
你甚至可以把它们绑在一起,虽然我不确定你为什么要这样做。