首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >std::function的模板参数是如何工作的?(实现)

std::function的模板参数是如何工作的?(实现)
EN

Stack Overflow用户
提问于 2010-08-21 04:51:23
回答 5查看 26.7K关注 0票数 55

在Bjarne Stroustrup的主页(C++11 FAQ)中:

代码语言:javascript
运行
复制
struct X { int foo(int); };

std::function<int(X*, int)> f;
f = &X::foo; //pointer to member

X x;
int v = f(&x, 5); //call X::foo() for x with 5

它怎麽工作?std::function如何调用foo成员函数

模板参数是int(X*, int)&X::foo是否从成员函数指针转换为非成员函数指针?!

代码语言:javascript
运行
复制
(int(*)(X*, int))&X::foo //casting (int(X::*)(int) to (int(*)(X*, int))

澄清一下:我知道我们不需要强制转换任何指针来使用std:: function,但是我不知道std::function的内部是如何处理成员函数指针和非成员函数指针之间的不兼容性的。我不知道标准是怎么允许我们实现像std::function这样的东西的!

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3534812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档