在visual studio中编译意外的(未声明的标识符)错误

std::bind - compiling unexpected (undeclared identifier) error in visual studio

本文关键字:未声明 错误 标识符 意外 visual studio 编译      更新时间:2023-10-16

另一个令人不安的错误信息对我来说,如果我理解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&作为参数-返回一个布尔值。

在您的例子中,您想要这样:

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