C++ vs2015中使用std::functional的误报错误

C++ vs2015中使用std::functional的误报错误,c++,c++11,visual-studio-2015,stdbind,C++,C++11,Visual Studio 2015,Stdbind,我昨天已经实现了一些测试函数,所有的编译和工作都很好,没有错误。今天我回到我的电脑上,我的std::bind被标上红色下划线,但编译时没有错误。似乎Intellisense和编译器在std::bind类型上不一致。我怎样才能解决这个问题 #include <functional> class MyClass { public: int doE() { return 0; } int doF() { return 1;

我昨天已经实现了一些测试函数,所有的编译和工作都很好,没有错误。今天我回到我的电脑上,我的
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();
}
#包括
类MyClass{
公众:
int doE(){
返回0;
}
int-doF(){
返回1;
}
};
void main()
{
MyClass obj;
std::function f=std::bind(&MyClass::doE,obj);//带下划线的红色

Std::Cuth

和VS 2015 C++有同样的问题,我讨厌它。微软让我发疯。< /P> 目前,我正在使用一种令人讨厌的变通方法,将代码移动到一个静态函数。在您的情况下,它将类似于以下内容:

class MyClass {
    // other code

    int doE () {
        return 0;
    }

    static int statDoE(MyClass * myClass) {
        return myClass->doE();
    }

}

VisualStudio智能感知解析器与Visual C++编译器不一样。智能感知有时会认为有效代码无效,并将其报告为错误。尝试使用lambda而不是<代码> STD::绑定< /代码>,因为使用<代码>的理由很少。std::bind
超过lambda,除了由
std::bind
怪癖、来自
std::bind
错误的复杂且不可读的错误消息以及普遍的受虐狂引起的模糊中断之外?我重新编写了我的代码以使用lambda,这非常好。可读性得到了提高,不再有错误消息。谢谢雅克!昨晚你的电脑发生了什么变化?
class MyClass {
    // other code

    int doE () {
        return 0;
    }

    static int statDoE(MyClass * myClass) {
        return myClass->doE();
    }

}