Ich beobachte Scott Meyers Online-Video und habe ein anderes Ergebnis mit seiner Präsentation. Hier ist der Code:Auto-Typ Abzug der Funktion Rückgabewert
auto LookupValue(int i) {
static vector<int> values = {1, 2, 3, 4, 5};
return values[i];
}
ich mit den Informationen einen Waring für die Rückleitung bekam: ‚Return‚int &‘aus einer Funktion zurückkehrt 'Leere‘. Warum der zurückkehrende Wert herleiten, um ungültig zu machen?
Hier ist meine Testbed:
[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
nur ein kurzes Update: Ich teste den Wert Rückkehr wie folge und die Compilierung DO den Rückgabetyp mit integrierten eingestellt und soll von Wert, weil nur zurückgeschickt werden die letzte Zeile Ausgang mit 1, die anderen sind alle 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;
Update-Fazit: Schließlich dabei um einen Fehler der Parse-Komponente von CLION ist, und sie versprechen es in der nächsten Version zu beheben. Hier ist der Fehlerbericht und Feedback:
https://youtrack.jetbrains.com/issue/CPP-9906
Kompilieren Sie in C++ 11 oder C++ 14? – nefas
C++ 14. C++ 11 unterstützt den Rückgabetyp von Funktionen nicht automatisch. – fetag
Deshalb habe ich gefragt, es könnte einfach eine seltsame Fehlermeldung gewesen sein, aufgrund der Tatsache, dass Sie mit C++ 11 Postfix Rückgabetyp mit Auto verwenden müssen. – nefas