首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数g++ 6.2的自动类型推导

函数g++ 6.2的自动类型推导
EN

Stack Overflow用户
提问于 2017-01-12 15:30:14
回答 1查看 77关注 0票数 0

我正在试验现代的C++ 'auto‘,并找到了一个简单的例子,它会产生一个错误,但我不明白为什么:

main.cpp

代码语言:javascript
复制
// error: use of ‘auto test(int)’ before deduction of ‘auto’ int i = test(5);
int i = test(5);

test.h

代码语言:javascript
复制
auto test(int i);

test.cpp

代码语言:javascript
复制
auto test(int i) {
  if (i == 1)
    return i;               // return type deduced as int
  else
    return Correct(i-1)+i;  // ok to call it now
}

但是,如果我使用'->‘->指定类型,代码就会生成并运行良好。例如:

代码语言:javascript
复制
auto test(int i) -> int;

g++ 6.2是编译器的现代版本,我想知道为什么我必须使用'-> int‘。谢谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-12 15:33:08

返回类型推断根本不能用于声明。编译器使用定义(实现)通过检查函数实际返回的内容来推断类型。在声明中不可能这样做,所以当调用函数时编译将失败,因为还没有推断的返回类型。

使用尾部返回类型时,将显式指定返回类型。在您的示例中,它与使用旧的“正常”方式声明返回类型没有什么不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41617005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档