什么 - >功能括号后的符号表示?

时间:2016-09-27 10:41:53

标签: c++ c++11

例如,在:

  virtual auto create_obj() -> std::unique_ptr<Base>
  {
    return std::unique_ptr<Base>{};
  }

什么 - &gt;表示? 由于返回类型被指定为auto,为什么有必要?

1 个答案:

答案 0 :(得分:3)

它被称为尾随返回类型,它只是另一种指定函数返回类型的方法。

有用的一种情况是从函数返回一个函数指针。这是&#34;标准&#34;语法:

void yoyo(){
    std::cout << "yoyo!\n";
}

void(*my_fn())(){
    return yoyo;
}

更多&#34;现代&#34;语法:

auto my_fn() -> void(*)(){
    return yoyo;
}

哪个更容易阅读。

P.S。尾部返回类型也可用于函数指针声明:

auto yoyo(){ std::cout << "yoyo!\n"; }

auto yoyo_fn() -> void(*)(){ return yoyo; }

auto too_far() -> auto(*)() -> void(*)(){ return yoyo_fn; }

这是非常人为的,但比我必须使用传统语法编写更容易阅读!