将自动返回类型扣除工作为主要

Will automatic return type deduction work for main?

本文关键字:工作 返回类型      更新时间:2023-10-16

我能否为 C++1y (C++14( 中的主函数执行以下操作:

auto main()
{
    // ...
}

那么即使我们不需要使用显式return 0;,返回类型也会自动int吗?

不,这是不允许的。C++14标准草案N3690的第7.1.6.4/10段规定:

如果具有声明的返回类型且使用占位符类型的函数没有return语句,则返回 类型就像从函数右大括号处没有操作数的 return 语句中推导的那样 身体。[...]

这意味着省略 main() 中的 return 语句将使其类型void

第3.6.1/5段引入的关于从main()末尾流出的特别规则规定:

[...]如果控制到达终点 的main没有遇到return语句,效果是执行

return 0;

措辞说,程序执行期间的"效果"与存在return 0相同,而不是将return语句添加到程序中(这将影响根据引用段落的类型推断(。

编辑:

对此有一份缺陷报告(由Johannes Schaub提供(:

拟议决议(2013年11月(:

修改3.6.1 [basic.start.main] 第2段如下:

实现不应预定义主函数。此函数不得重载。它应具有 int 类型的声明返回类型,否则其类型是实现定义的。所有实现 一个实现应允许两者

  • ()返回int
  • (int 的函数,指向指向 char 的指针( 返回int

作为类型...