包装介绍标准功能

时间:2019-04-15 22:19:29

标签: c++ std-function

因此,我没有理由为此声明使用std::function。就我所读的内容而言,可以使用std::function编写以下语句。

此语句应如何显示?用std::function

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

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

1 个答案:

答案 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))并为该常规签名的任何函数(无论是普通函数,成员函数还是函数)创建一个多态包装器类对象。