的std ::绑定 - 在Visual Studio编译意外(未声明的标识符)错误
很适合我的另一个令人不安的错误信息,如果我理解的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&
作为参数 - 返回一个布尔值。
在你的情况,你想这样:
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 2013-03-12 11:25:52
@ paul23是,该页面是不是占位符不同的命名空间是非常明确的 - 我只是编辑的页面,以更明显的:-) – 2013-03-12 11:28:42
'的std ::占位符:: _ 1' – Xeo 2013-03-12 11:16:49