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

参见英文答案 >
Recursive typedef function definition : std::function returning its own type                                    3个

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

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

这里我们有一个返回uint32_t的函数,并获取指向SomeStruct的指针.

我想要做的是修改这个函数,使它返回一个自己的类型,如下所示:

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

显然,这不会编译,但它代表了我正在努力实现的最终目标.

最佳答案 我不知道如何用std :: function实现这一点.

但是,此代码(使用仿函数)在Visual Studio 2017中编译并运行:

struct SomeStruct {};

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

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