С++ зачем указывать тип возвращаемого из функции так?
auto F() -> string {
return "23";
}
-> string
Источник: Stack Overflow на русском
auto F() -> string {
return "23";
}
-> string
Это альтернативный вариант написания формата возвращаемого значения из функции. Он появился при введении в стандарт C++11
лямда-функций. Формат описания лямда-функций начинается с []
и возвращаемое значение перед функцией написать невозможно.
auto f = []()-> string { return string("23"); }
Это называется хвостовым возвращаемым значением. Основное преимущество в том, что оно находится уже в контексте и может использовать идентификаторы класса или аргументов.
struct t_Outer
{
struct t_Inner{};
auto foo(void) -> t_Inner *;
};
// Вместо
// t_Outer::t_Inner * t_Outer::foo(void)
auto t_Outer::foo(void) -> t_Inner *
{
return nullptr;
}
// вместо
// using t_Arg = int;
// t_Arg square(t_Arg num)
auto square(int num) -> decltype(num);