我碰巧在一个关于 C++11 的视频中看到了下面的代码片段,作者在这里使用了
auto main()->int
我不明白这一点。我尝试使用 -std=c++11
在 g++
中编译,它可以工作。
有人可以向我解释这里发生了什么吗?我尝试使用“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
产生的类型。在 multiply()
前面使用 decltype()
是无效的,因为 m
和 n
不是,然而,声明。
虽然它主要用于函数模板,但同样的符号也可以用于其他函数。在 C++14 中,当函数在某些情况下使用 auto
引入时,甚至可以省略尾随返回类型。
关于c++ - auto main()->int 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21085446/