将自动返回类型扣除工作为主要
Will automatic return type deduction work for main?
我能否为 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
作为类型...
相关文章:
- 如何获取std::result_of函数的返回类型
- 奇怪的结构&GCC&clang(void*返回类型)
- 如何建立使用模板函数的lambda函数的尾部返回类型
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 函数作为模板参数,是否对返回类型强制约束
- C++中函数的向量返回类型引发错误
- 检查函数返回类型是否与STL容器类型值相同
- 为什么返回类型中需要typename?C++
- c++ 11 带有 decltype 的尾随返回类型无法按预期工作
- 虚函数如何工作,分配后新的返回类型会发生什么?
- 模板返回类型函数如何在C++中工作
- 模板占位符未在成员的返回类型中定义,仍然可以正常工作
- 将自动返回类型扣除工作为主要
- 尾随返回类型、声明和引用限定符:它们能一起工作吗?
- 为什么decltype返回类型在递归模板中失败,而返回类型演绎却工作得很好?
- SFINAE在返回类型中工作,但不作为模板参数
- 具有多重继承的协变返回类型.这些代码是如何工作的
- 与符号在函数声明的返回类型中是如何工作的