我试图了解std :: bind和std :: function是如何工作的。我无法编译以下代码:
无效功能(……
你几乎就在那里,只需改变它的类型 fun 至
fun
std::function<void(float, std::string const&)> fun = std::bind(...); // ^^ no more int here fun(0.2, "world"); // ^^^^^^^^^^^^ those types must match the above signature
请注意,在修复类型的第一个函数参数时更改函数签名 int 价值 10 。因此,它不能是类型的 std::function 实例。
int
10
std::function
进一步注意到Scott Meyers在有效现代C ++的第34项中建议取代 std::bind 使用lambda,例如
std::bind
auto fun = [](float b, std::string const& s){ function(10, b, s); }; // Identical invocation: fun(0.2, "world");