标签: c++ c++11 dry auto
此代码无法编译(intel icc 15.0.3),错误消息为explicit type is missing ("int" assumed)
explicit type is missing ("int" assumed)
auto foo(){ const bool retVal = false; return retVal; }
可以很容易地看出,这种情况下的返回类型是bool。为什么auto不能用作函数声明的返回类型?此功能很好地支持DRY principle。
bool
答案 0 :(得分:4)
由Jon和Ron评论,使用c++14编译器修复了此问题。
此外,Aki的lambda解决方案可行:
auto foo = []() { const bool retVal = false; return retVal; };
答案 1 :(得分:1)
如果你想以现代的方式做到这一点,你可以在C ++ 11中使用尾随返回类型:
auto foo() -> bool{ const bool retVal = false; return retVal; }
但我不得不承认,我更倾向于使用bool foo(){..}来预备C ++ 14。
bool foo(){..}