因此,我没有理由为此声明使用std::function
。就我所读的内容而言,可以使用std::function
编写以下语句。
此语句应如何显示?用std::function
template <class T>
class CFooTemplate
{
public:
typedef void (T::*FOO_STATE)(void);
解释一下写作背后的逻辑。
答案 0 :(得分:0)
我不确定您的意思,但是我会给您一个机会。
此语句应如何显示?用
撰写std::function
如果我理解正确,那么您的意思是:typedef void (T::*FOO_STATE)(void);
在这种情况下,您应该写typedef std::function<void()> FOO_STATE;
这是因为您正在使用指向(成员)函数的指针。该函数本身的签名是void()
,在C ++中,它与您使用的void(void)
等效。
std::function
接受原始签名(例如void()
或void(void)
)并为该常规签名的任何函数(无论是普通函数,成员函数还是函数)创建一个多态包装器类对象。