【发布时间】:2018-11-19 15:12:58
【问题描述】:
让我们从一个简单的函数 typedef 开始:
typedef std::function<uint32_t(SomeStruct *)> HandlerFunction;
这里我们有一个函数,它返回一个 uint32_t 并接受一个指向 SomeStruct 的指针。
我想做的是修改这个函数,让它返回一个自己的类型,像这样:
typedef std::function<HandlerFunction(SomeStruct *)> HandlerFunction;
显然这不会编译,但它代表了我试图实现的最终目标。
【问题讨论】:
-
这不是无限递归吗?我的函数接受
X并返回一个接受X的函数并返回一个接受X的函数并返回一个接受X的函数... -
在我看来,你让这件事变得更难了。根据您想要做什么,functors 或 function pointers 可能是合适的。
-
目标是单纯而简单的:一个非常简单的状态机。 “状态”将由一个函数表示。调用该函数将返回下一个“状态”,它只是另一个函数。也许它太聪明了。
-
@SergeyA - 它不必返回自己,它可以返回与签名匹配的不同函数。
-
这与function returning itself的C问题非常相似。
标签: c++