所以,我没有理由将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()
或void(void)
)并为该常规签名的任何函数创建多态包装,无论是普通函数,成员函数还是函数类对象。