2013-03-12 77 views
4

很适合我的另一个令人不安的错误信息,如果我理解的std ::绑定正确,我可以像参数来_1的限定非定的参数?对?那么考虑下面这一行:的std ::绑定 - 在Visual Studio编译意外(未声明的标识符)错误

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&作为参数 - 返回一个布尔值。

+5

'的std ::占位符:: _ 1' – Xeo 2013-03-12 11:16:49

回答

9

在你的情况,你想这样:

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

嗯,其实是有道理的...... en.cppreference.com/w/cpp/utility/functional/ BIND把我出师不利这里:P – paul23 2013-03-12 11:25:52

+1

@ paul23是,该页面是不是占位符不同的命名空间是非常明确的 - 我只是编辑的页面,以更明显的:-) – 2013-03-12 11:28:42