2013-03-12 45 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

相關問題