2
昨天我已經實現了一些測試函數,並且所有的編譯和工作都沒有錯誤。今天,我回到我的電腦,我的std::bind
的下劃線是紅色的,但編譯沒有錯誤。看起來像Intellisense和編譯器不同意std::bind
類型。我怎樣才能解決這個問題?在vs2015中使用std :: functional的錯誤肯定錯誤
#include <functional>
class MyClass {
public:
int doE() {
return 0;
}
int doF() {
return 1;
}
};
void main()
{
MyClass obj;
std::function<int()> f = std::bind(&MyClass::doE, obj); // underlined red
std::cout << f();
}
錯誤消息如下:
Error (active) no suitable user-defined conversion from "std::_Binder<std::_Unforced, int (MyClass::*)(), MyClass &>" to "std::function<int()>" exists functionals c:\functionals\functionals\thirdFunctionOnObject.h
我有同樣的錯誤類型(智能感知說有錯誤,但它編譯就好了),在更復雜的代碼,在那裏我用std::mem_fn().
智能感知通常可以安全地忽略。這幾乎完全沒用。 –
Visual Studio IntelliSense分析器與Visual C++編譯器使用的不同。智能感知有時會認爲有效的代碼無效並將其報告爲錯誤。 –
嘗試使用lambda來代替'std :: bind',因爲除了'std :: bind'怪癖導致的模糊中斷之外,使用'std :: bind'的原因非常少,來自複雜和不可讀的錯誤消息'std :: bind'錯誤,和一般的受虐狂? – Yakk