std::bind - 在Visual Studio中编译时出现意外的(未声明标识符)错误

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

6
std::placeholders::_1 - Xeo
1个回答

12

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

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

嗯,那确实有道理...... en.cppreference.com/w/cpp/utility/functional/bind 让我有点摸不着头脑 :P - paul23
1
@paul23 是的,页面没有很清楚地说明占位符在不同的命名空间中 - 我刚刚编辑了页面,使其更加明显 :-) - Arne Mertz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接