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

函数返回值的自动类型推导
EN

Stack Overflow用户
提问于 2017-05-29 18:00:29
回答 1查看 385关注 0票数 0

我正在看Scott Meyer的在线视频,他的演示文稿有不同的结果。代码如下:

代码语言:javascript
复制
auto LookupValue(int i) {
    static vector<int> values = {1, 2, 3, 4, 5};
    return values[i];
}

我得到了一个关于返回行的警告信息:‘return 'int&’from a function return 'void'‘。为什么返回值推导为void?

这是我的试验床:

代码语言:javascript
复制
fetag@MacgicBox ~$ clang --version
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

快速更新一下:我测试返回值如下所示,编译器确实用integral设置了返回值类型,并且应该按值返回,因为只有最后一行输出为1,其他的都是0。

代码语言:javascript
复制
cout << is_lvalue_reference<decltype(LookupValue(2))>::value << endl;
cout << is_rvalue_reference<decltype(LookupValue(2))>::value << endl;
cout << is_reference<decltype(LookupValue(2))>::value << endl;
cout << is_pointer<decltype(LookupValue(2))>::value << endl;
cout << is_void<decltype(LookupValue(2))>::value << endl;
cout << is_integral<decltype(LookupValue(2))>::value << endl;

更新结论:最后,这是CLion的解析组件的一个错误,他们承诺在下一个版本中修复它。以下是错误报告和反馈:

https://youtrack.jetbrains.com/issue/CPP-9906

EN

回答 1

Stack Overflow用户

发布于 2017-05-29 18:10:22

为什么返回值会被推断为空?

编译器出了一个错误。它应该推导出int,而不是void。

..。或者示例不完整。

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

https://stackoverflow.com/questions/44239668

复制
相关文章

相似问题

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