0
我在观看Scott Meyers的在线视频,并在他的演示文稿中获得了不同的结果。下面是代码:函数返回值的自动类型扣除
auto LookupValue(int i) {
static vector<int> values = {1, 2, 3, 4, 5};
return values[i];
}
我得到了与回报信息线华林:“返回'从函数返回'廉政&无效”。 为什么返回值推断无效?
这里是我的测试平台:
[email protected] ~$ 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;
更新的结论: 最后,这是克利翁的解析组件的错误,他们承诺解决它的下一个版本。下面是错误报告和反馈:
https://youtrack.jetbrains.com/issue/CPP-9906
你用C++ 11或C++ 14编译? – nefas
C++ 14. C++ 11不支持函数的返回类型为auto。 – fetag
这就是为什么我问,它可能只是一个奇怪的错误消息,因为在C++ 11中,您必须使用带有auto的postfix返回类型。 – nefas