Я использую GCC 6.3 и, к моему удивлению, следующий фрагмент кода скомпилирован.
auto foo(auto x)
{
return 2.0*x;
}
....
foo(5);
AFAIK это расширение GCC.Сравните со следующим:
template <typename T, typename R>
R foo(T x)
{
return 2.0*x;
}
Кроме того, что вычет типа возвращаемого значения эквивалентен приведенному выше объявлению?