Разница в синтаксисе альтернативной функции

В чем разница между этими двумя функциями?

auto func(int a, int b) -> int;

int func(int a, int b);

7

Решение

Кроме обозначений, в вышеупомянутом случае нет никакой разницы. Синтаксис объявления альтернативной функции становится важным, когда вы хотите обратиться к одному или нескольким аргументам, чтобы определить тип возвращаемого значения функции. Например:

template <typename S, typename T>
auto multiply(S const& s, T const& t) -> decltype(s * t);

(да, это глупый пример)

10

Другие решения

Между этими двумя объявлениями нет никакой полезной разницы; обе функции возвращают int,

Конечный тип возвращаемого значения в C ++ 11 полезен для функций с template Аргументы, где возвращаемый тип не известен до компиляции, например, в этом вопросе: Как правильно написать конечный тип возврата?

5

Они используют другой синтаксис, и только один из них действителен в версиях C ++ до C ++ 11. Кроме этого, нет никаких различий между двумя объявлениями функций, которые вы показали в своем вопросе.

2
По вопросам рекламы [email protected]