【发布时间】:2017-10-06 08:57:57
【问题描述】:
此代码无法编译 (intel icc 15.0.3) 并显示错误消息 explicit type is missing ("int" assumed)
auto foo(){
const bool retVal = false;
return retVal;
}
很容易看出,本例中的返回类型为bool。为什么auto不能作为函数声明的返回类型?此功能将很好地支持DRY principle。
【问题讨论】:
-
试试 C++14。这允许这样做。
-
对“为什么功能 X 不存在”的一般回答是:“没有人能够实现它”通常带有隐含的 yet
-
或者使用 lambda,它允许:
auto foo = []() { const bool retVal = false; return retVal; }; -
@Caleth 也可能是“因为它会与这个或那个冲突”,这在具有相应历史和强大设计目标的语言(如 C++)中并不少见。
-
@Quentin 是的,但这可以说是没有人实现它的部分原因。在 C++ 的情况下,“实现它”看起来就像“写了一个提案,让委员会讨论,展示了一个原型,让它投票成为标准”。其中一些步骤可能会失败