首页 > 解决方案 > 是否可以编写一个将自身作为类型返回的 c++ std::function?

问题描述

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

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

这里我们有一个函数,它返回一个 uint32_t 并接受一个指向 SomeStruct 的指针。

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

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

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

标签: c++

解决方案


我不明白这是如何实现的std::function

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

struct SomeStruct {};

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

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

推荐阅读