C ++自动函数返回?

时间:2018-06-11 10:53:56

标签: c++

最近我看到一些代码标记为这样的代码:

auto Function(...) -> BOOL

使用

之间是否存在一些差异
BOOL Function(...)

第一个对我来说看起来更好,也许我只是很奇怪,它只是视觉,还是有其他一些好处?

2 个答案:

答案 0 :(得分:5)

  

仅使用[...]

之间是否存在一些差异

不 - 在您的特定示例中,它们是等效的。

  

它只是视觉效果,还是有其他一些好处?

追踪回报类型有一些好处:

  • 以后更容易切换到自动退货类型扣除(只需删除->之后的所有内容)

  • 可以将参数用作返回类型的一部分

  • 可以访问类C类型别名而无需说C::

在您的特定示例中,这些不适用。

答案 1 :(得分:3)

当您需要在返回类型

之前对参数进行类型推导时,使用语句auto Function(...) -> some_type
template<class T>
   decltype(a*b) add(T a, T b){
   return a + b;
}

但这不会起作用所以你需要:

 template<class T>
   auto add(T a, T b) -> decltype(a + b) {
   return a + b;
 }