2017-10-06 91 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。

相关问题