Ich habe gestern einige Testfunktionals implementiert und alles kompiliert und funktionierte gut ohne Fehler. Heute kam ich zurück zu meinem PC und meine std::bind
sind rot unterstrichen aber kompilieren ohne Fehler. Scheint so, als ob Intellisense und der Compiler dem Typ std::bind
nicht zustimmen. Wie kann ich das beheben?falsch-positiven Fehler mit Std :: funktional in vs2015
#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();
}
Die Fehlermeldung lautet wie folgt:
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
Ich habe nicht den gleichen Fehler-Typ (Intellisense sagen, es ist ein Fehler, aber es kompiliert just fine) in anspruchsvollere Codes , wo ich std::mem_fn().
Intellisense kann normalerweise sicher ignoriert werden. Es ist fast völlig nutzlos. –
Der Visual Studio IntelliSense-Parser ist nicht derselbe wie der Visual C++ - Compiler. IntelliSense kann manchmal denken, dass gültiger Code ungültig ist, und dies als Fehler melden. –
Versuchen Sie, ein Lambda anstelle von 'std :: bind 'zu verwenden, da es sehr wenig Gründe gibt,' std :: bind' über Lambda zu verwenden, außer obskuren Brüchen, die durch 'std :: bind'-Macken, komplexe und unlesbare Fehlermeldungen verursacht werden 'std :: bind' Fehler und allgemeiner Masochismus? – Yakk