是否可以编写将自身返回为类型的c ++ std :: function?

时间:2018-11-19 15:12:59

标签: c++

让我们从一个函数的简单typedef开始:

typedef std::function<uint32_t(SomeStruct *)> HandlerFunction;

这里有一个返回uint32_t并使用指向SomeStruct的指针的函数。

我想做的就是修改此函数,使其返回自身的类型,如下所示:

typedef std::function<HandlerFunction(SomeStruct *)> HandlerFunction;

显然不会编译,但这代表了我要实现的最终目标。

2 个答案:

答案 0 :(得分:1)

我不知道如何使用std::function来实现。

但是,此代码(改为使用函子)可在Visual Studio 2017中编译并运行:

struct SomeStruct {};

struct Func
{
   Func operator()(SomeStruct*) { return *this; }
};

int main()
{
   Func f;
   Func f2 = f(nullptr);
}

答案 1 :(得分:0)

很遗憾,这是不可能的。但是,如果您的目标是实现有限状态机boost::statechart可能会帮助您