我开始了新的私人项目,并决定用更多的C++ 11/14这段时间.所以我也开始使用新的返回语法
auto functionName() -> returnType;
Run Code Online (Sandbox Code Playgroud)
它在大多数情况下工作得很好,但现在我需要一些错误处理,并且无法找到如何重写这样的东西:
virtual const char* what() const noexcept override;
Run Code Online (Sandbox Code Playgroud)
使用新语法.是否存在无法使用新语法的情况,或者我是否只是不够聪明才能找到正确的顺序?对我而言,保持一致是很重要的,所以我希望问题更多地在我身边.
正如预期的那样,C++ 11中的以下内容失败,因为该语言没有bog标准函数的返回类型推导:
auto main()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,C++ 14确实如此,所以我无法解释以下错误(在GCC trunk,clang 3.8和Visual Studio 2015中具有相同的结果):
error: 'main' must return 'int'
Run Code Online (Sandbox Code Playgroud)
我没有看到标准中的一个段落,禁止返回类型扣除main
?或者两个编译器都不兼容?
(对于它的价值,我永远不会真的这样做.int main()
为了胜利......)