在C++ 11的视频中,我碰巧遇到了以下代码片段,作者在其中使用

auto main()->int

我不明白这一点。我尝试使用g++-std=c++11中进行编译,并且可以正常工作。
有人可以告诉我这是怎么回事吗?我尝试使用“auto main()-> int”进行搜索,但未找到任何帮助。

最佳答案

C++ 11引入了尾随返回类型的表示法:如果在auto中引入了函数声明,则返回类型将在参数和->序列之后指定。也就是说,所有要做的就是声明main()以返回int

尾随返回类型的意义主要在于函数模板,现在可以使用函数的参数以及decltype()来确定返回类型。例如:

template <typename M, typename N>
auto multiply(M const& m, N const& n) -> decltype(m * n);

这声明了multiply()函数以返回m * n产生的类型。将decltype()放在multiply()前面将是无效的,因为尚未声明mn

尽管它对于功能模板主要有用,但是相同的符号也可以用于其他功能。在C++ 14中,在某些情况下使用auto引入函数时,甚至可以省略尾随返回类型。

09-10 05:27
查看更多