包装介绍标准功能

Wrap intro std function

所以,我没有理由为这个声明使用std::function。根据我的阅读,可以使用 std::function.

编写以下语句

这个声明应该是什么样子的?用std::function

写的
template <class T>
class CFooTemplate
{
public:
    typedef void (T::*FOO_STATE)(void);

稍微解释一下,写作背后的逻辑。

我不完全确定你的意思,但我会试一试。

How should this statement look like? Written with std::function

如果我没理解错的话,你指的是这一行:typedef void (T::*FOO_STATE)(void);

在这种情况下,你会写 typedef std::function<void()> FOO_STATE;

这是因为您正在使用指向(成员)函数的指针。函数本身的签名是 void(),在 C++ 中相当于您使用的 void(void)

std::function 采用原始签名(例如 void()void(void))并为该通用签名的任何函数创建多态包装器,无论是普通函数、成员函数,或类似函数的对象。