为什么这个代码在c ++ 11中编译it2和it4是正确的。 但it1和it3是非静态函数的编译错误? 这是std编译器的错误吗?或者我理解这些错误?
#include <iostream>
#include <functional>
using namespace std;
namespace test {
class a {
public:
void funa() {}
};
class b : public a {
public:
void funb() { }
};
struct c {
void func() {}
};
}
int main()
{
test::b b1;
test::c c1;
auto it1 = std::bind(&(test::c::func),&c1);
auto it2 = std::bind(&test::c::func,&c1);
auto it3 = std::bind(&test::a::funa, &b1);
auto it4 = std::bind(&(test::a::funa),&b1);
}