如何在C ++中定义一个返回相同类型的函数的函数类型?

时间:2019-08-18 14:45:55

标签: c++ typedef

我想知道如何声明一个函数类型,该函数类型使用C ++中的typedef返回相同类型的函数。

在观看Rob Pike在词法扫描方面的Golang演讲时,我遇到了以下代码片段,

type stateFn func(*Scanner) stateFn

这是我想在C ++中复制的确切行为。

我尝试使用以下类型定义

typedef state_fn state_fn(Scanner &);

但这给了我错误function returning function is not allowed。 可以做这样的事情吗?如果没有,我该如何做类似的事情?

1 个答案:

答案 0 :(得分:0)

您不能以C ++返回函数。参见[dcl.fct] p10:

  

函数不得具有数组或函数的返回类型,尽管它们可以具有指针或对此类事物的引用的返回类型。

但是,您可以返回某种形式的callable(可能包装了相同类型的函数)。