5

我认为这个问题的答案是否定的,但我只是想确定一下。

如果我std::function在函数中有 a 作为参数,那么传入 a 是否有任何问题,boost::bind反之亦然?

编辑:

我发现当你包含 boost\bind.h 时,boost::bind 使用的占位符会直接导入到命名空间中,并且它们与 std::bind 不兼容。对于 std::bind,您必须显式引用占位符,例如:std::placeholders::_1,或执行其他一些 typedef 或使用魔法使它们同时可用。

4

1 回答 1

10

std::不。 (and boost::)的全部目的function是它们可以接受任何可以使用正确签名调用的函数对象——包括 lambda、仿函数和任何类型的绑定的结果。他们不关心你的函数对象来自哪里或它是什么类型。

您甚至可以将它们相互绑定,尽管我不确定您为什么要这样做。

于 2012-09-02T11:49:38.897 回答