c++ - auto main()->int 是什么意思?

标签 c++ c++11

我碰巧在一个关于 C++11 的视频中看到了下面的代码片段,作者在这里使用了

auto main()->int

我不明白这一点。我尝试使用 -std=c++11g++ 中编译,它可以工作。 有人可以向我解释这里发生了什么吗?我尝试使用“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() 是无效的,因为 mn 不是,然而,声明。

虽然它主要用于函数模板,但同样的符号也可以用于其他函数。在 C++14 中,当函数在某些情况下使用 auto 引入时,甚至可以省略尾随返回类型。

关于c++ - auto main()->int 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21085446/

相关文章:

c++ - 在 libc++ 的内联命名空间中转发声明类的可移植方法是什么?

c++双重删除文件范围变量,链接问题?

c++ - Kinect与Opencv,深度图,如何使用

c++ - 指向指针的指针。我们能走多远?

c++ - 如何找到参数包的长度?

c++ - c++11参数包可以在模板外使用吗?

c++ - 双重删除c++中的两个分配变量

c++ - 为什么下面的代码不起作用?

c++ - 如果在 c++ 之前未定义,则定义函数/方法

c++ - 多线程中是否需要原子类型? (OS X, clang, c++11)