在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()
前面将是无效的,因为尚未声明m
和n
。尽管它对于功能模板主要有用,但是相同的符号也可以用于其他功能。在C++ 14中,在某些情况下使用
auto
引入函数时,甚至可以省略尾随返回类型。