包装介绍std功能

问题描述 投票:-3回答:1

所以,我没有理由将std::function用于此声明。从我读到的内容可以使用std::function编写以下语句。

这句话应该怎么样?用std::function写的

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

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

c++ std-function
1个回答
0
投票

我不完全确定你的意思,但我会给它一个刺。

这句话应该怎么样?用std::function写的

如果我理解正确,你的意思是这一行:typedef void (T::*FOO_STATE)(void);

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

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

std::function获取原始签名(例如void()void(void))并为该常规签名的任何函数创建多态包装,无论是普通函数,成员函数还是函数类对象。

© www.soinside.com 2019 - 2024. All rights reserved.