例如,在:
virtual auto create_obj() -> std::unique_ptr<Base>
{
return std::unique_ptr<Base>{};
}
什么 - &gt;表示? 由于返回类型被指定为auto,为什么有必要?
答案 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; }
这是非常人为的,但比我必须使用传统语法编写更容易阅读!