【发布时间】:2018-03-20 06:50:28
【问题描述】:
据我所知,成员函数指针只能赋值给指向成员函数类型的指针,转换成除此之外的任何其他都是违反标准的吧?
当调用std::bind(&T::memberFunc, this)时,它应该返回一个依赖于T的依赖类型。(在VC++版本的std中,它是一个名为_Binder的类模板)。
所以问题变成了为什么一个std::funcion 可以覆盖所有_Binder(VC++ 版本) 类型。
class A
{
public:
void func(){}
};
class B
{
public:
void func(){}
};
std::function<void(void)> f[2];
A a;
B b;
f[0] = std::bind(&A::func, &a);
f[1] = std::bind(&B::func, &b);
而且我无法想象存储函数的 std::funcion 成员是什么类型的,除非我从一开始就错了。
This question 只覆盖了需要调用它的实例的成员函数。
但我的问题是为什么一个 std::function 类型可以容纳所有 T 类型。
【问题讨论】:
-
您的绑定不等同于
void f0() { return a.func(); }和void f1() { return b.func(); }之类的吗? -
没有。还有
return a.func();?这是什么?@Jean-BaptisteYunès -
@francis,你看过这个explanation吗?
-
是的,但我的答案不存在。@SmitYcyken
标签: c++ c++11 std-function stdbind