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