c++ - 包装介绍性标准功能
问题描述
所以,我没有理由使用std::function
这种说法。就我所读到的内容而言,以下语句可以使用std::function
.
这句话应该怎么看?写着std::function
template <class T>
class CFooTemplate
{
public:
typedef void (T::*FOO_STATE)(void);
稍微解释一下,写作背后的逻辑。
解决方案
我不完全确定你的意思,但我会试一试。
这句话应该怎么看?写着
std::function
如果我理解正确,您的意思是这一行:typedef void (T::*FOO_STATE)(void);
在这种情况下,你会写typedef std::function<void()> FOO_STATE;
这是因为您使用的是指向(成员)函数的指针。函数本身的签名是void()
,在 C++ 中等同于void(void)
您使用的签名。
std::function
获取原始签名(例如void()
or void(void)
)并为该通用签名的任何函数创建多态包装器,无论是普通函数、成员函数还是类似函数的对象。
推荐阅读
- c++ - 如何计算每个骨骼的起始矩阵(t-pose)(使用 collada 和 opengl)
- javascript - Flask框架,如何使用ajax刷新值
- javascript - Javascript如何对具有相同前缀的逻辑或条件进行分组而不重复它们?
- passwords - ROPC 密码无效
- python - 尝试在 python 上使用 chromedriver.exe 时收到错误消息
- java - Jsh 不断运行命令无休止
- python-3.x - Geopandas 导出更改数据类型
- json - 复制数据活动中的 ADF 合并复制 JSON 文件会为映射数据流创建错误
- r - 基本 dyplr 函数给出错误:“check_dots_used”
- javascript - 清理对象中的 url 而不是单个 url