包装介绍标准功能
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)
)并为该通用签名的任何函数创建多态包装器,无论是普通函数、成员函数,或类似函数的对象。
所以,我没有理由为这个声明使用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)
)并为该通用签名的任何函数创建多态包装器,无论是普通函数、成员函数,或类似函数的对象。