我使用 C++14
在 GCC 中编译了以下程序。
#include <iostream>
using namespace std;
auto func(int i);
int main()
{
auto ret = func(5);
return 0;
}
auto func(int i)
{
if (i == 1)
return i;
else
return func(i-1) + i;
}
但是,我收到以下错误。
In function 'int main()': 8:16: error: use of 'auto func(int)' before deduction of 'auto' auto ret = func(5);
那么,我在这里缺少什么?
原文由 msc 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是 [dcl.spec.auto/11] :
要将其翻译成英文:编译器需要知道返回类型才能使用该函数。在
auto
这样使用的情况下,这通常是通过在使用点之前移动定义来实现的。如果您实际上不需要使用返回类型推导,如果您在声明中提供签名,包括返回类型,则可以保留使用后的定义。