使用std :: functional vs2015中的false阳性错误



我昨天实施了一些测试功能,一切都编译和工作正常,没有错误。今天,我回到我的PC上,我的std::bind的带下划线的红色,但没有错误。似乎IntelliSense和编译器在std::bind类型上不同意。我该如何解决?

#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:functionalsfunctionalsthirdFunctionOnObject.h

i确实具有相同的错误类型(Intellisense说有错误,但它的编译恰好)在更复杂的代码中,其中我使用了std::mem_fn().

与VS 2015 C 有同样的问题,我讨厌它。微软让我发疯。

目前,我正在通过将代码转移到静态功能来使用令人讨厌的工作。在您的情况下,它将类似于以下内容:

class MyClass {
    // other code
    int doE () {
        return 0;
    }
    static int statDoE(MyClass * myClass) {
        return myClass->doE();
    }
}

最新更新