2017-10-06 1 views
0

Dieser Code nicht (Intel icc 15.0.3) explicit type is missing ("int" assumed)Warum kann Auto nicht als Rückgabetyp für Funktionsdeklaration verwendet werden

auto foo(){ 
    const bool retVal = false; 
    return retVal; 
} 

Es ist leicht zu erkennen sein, dass die Rückkehr mit der Fehlermeldung nicht kompilieren Geben Sie in diesem Fall bool ein. Warum kann auto nicht als Rückgabetyp für die Funktionsdeklaration verwendet werden? Diese Funktion würde die DRY principle unterstützen.

+10

Versuchen Sie C++ 14. Was dies erlaubt. –

+0

Die allgemeine Antwort auf "warum Feature X nicht existiert" lautet: "Niemand hat es implementiert" oft mit einem impliziten * noch * – Caleth

+4

Oder verwenden Sie Lambda, die es erlaubt: 'auto foo = []() { const bool retVal = falsch; Rückkehr retVal; }; ' –

Antwort

4

Wie von Jon und Ron kommentiert, behebt die Verwendung eines Compilers dieses Problem.

Zusätzlich Aki ‚s Lambda-Lösung funktionieren würde:

auto foo = []() { 
    const bool retVal = false; 
    return retVal; 
}; 
1

können Sie einen nachgestellten Return Typ in C++ 11 verwenden können, wenn Sie es die moderne Art und Weise zu tun:

auto foo() -> bool{ 
    const bool retVal = false; 
    return retVal; 
} 

Aber ich muss zugeben, ich bevorzuge bool foo(){..} für Pre-C++ 14.

Verwandte Themen