В чем разница между этими двумя функциями?
auto func(int a, int b) -> int;
int func(int a, int b);
Кроме обозначений, в вышеупомянутом случае нет никакой разницы. Синтаксис объявления альтернативной функции становится важным, когда вы хотите обратиться к одному или нескольким аргументам, чтобы определить тип возвращаемого значения функции. Например:
template <typename S, typename T>
auto multiply(S const& s, T const& t) -> decltype(s * t);
(да, это глупый пример)
Между этими двумя объявлениями нет никакой полезной разницы; обе функции возвращают int
,
Конечный тип возвращаемого значения в C ++ 11 полезен для функций с template
Аргументы, где возвращаемый тип не известен до компиляции, например, в этом вопросе: Как правильно написать конечный тип возврата?
Они используют другой синтаксис, и только один из них действителен в версиях C ++ до C ++ 11. Кроме этого, нет никаких различий между двумя объявлениями функций, которые вы показали в своем вопросе.