2017-10-06 46 views
0

此代碼不能編譯(英特爾ICC 15.0.3),即返回在這種情況下鍵入的是bool。爲什麼auto不能用作函數聲明的返回類型?這個功能很好地支持DRY principle爲什麼汽車不能用作與錯誤訊息<code>explicit type is missing ("int" assumed)</code></p> <pre><code>auto foo(){ const bool retVal = false; return retVal; } </code></pre> <p>它可以很容易地看到返回類型爲函數聲明

+10

試試C++ 14。這允許這一點。 –

+0

「爲什麼功能X不存在」的一般答案是:「沒有人試圖實現它」,通常使用隱含* * – Caleth

+4

或使用lambda,它允許它:'auto foo = [](){ const bool retVal = false;返回retVal; };' –

回答

4

Jon和Ron所述,使用編譯器修復了此問題。

此外,Aki的拉姆達的解決方案將工作:

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

您可以可以使用尾隨返回類型在C++ 11,如果你想這樣做的現代的方式:

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

但我不得不承認,我更喜歡使用bool foo(){..}作爲pre-C++ 14。

相關問題