gpt4 book ai didi

c++ - 函数返回值的自动类型推导

转载 作者:行者123 更新时间:2023-11-27 23:53:46 25 4
gpt4 key购买 nike

我正在观看 Scott Meyers 的在线视频,并且对他的演示有不同的看法。这是代码:

auto LookupValue(int i) {
static vector<int> values = {1, 2, 3, 4, 5};
return values[i];
}

我收到一条关于返回行的警告,其中包含以下信息:“从返回‘void’的函数中返回‘int&’”。为什么返回值推导为void?

这是我的测试平台:

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

只是一个快速更新:我测试返回值如下,编译DO设置返回类型为整数,应该按值返回,因为只有最后一行输出1,其他都是0。

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 解析组件的一个错误,他们 promise 在下一个版本中修复它。这是错误报告和反馈:

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

最佳答案

Why the returning value deduce to void?

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

...或者示例不完整。

关于c++ - 函数返回值的自动类型推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44239668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com