4

对我来说,另一个令人不安的错误消息,如果我正确理解 std::bind 我可以像_1定义一个未给定的参数一样争论吗?正确的?考虑以下行:

std::function<bool(value_type, const std::string &)> 
                             func(std::bind(&Pred, _1, "name"));

这应该有效,对吧?这将用于 std::find_if() 函数,因此第一个参数应该是值类型,第二个参数应该是字符串。

然而,Visual Studio 2010 抱怨这一点并显示以下错误消息:

错误 C2065:“_1”:未声明的标识符

这很奇怪,我怎么能在 Visual Studio 中说“嘿,第一个参数没有绑定”。Pred 是一个以value_type, const std::string&参数为参数的简单函数 - 返回一个布尔值。

4

1 回答 1

12

在你的情况下,你想要这个:

std::function<bool(value_type, const std::string &)> 
                         func(std::bind(&Pred, std::placeholders::_1, "name"));
于 2013-03-12T11:18:00.733 回答