История изменений
Исправление Serral, (текущая версия) :
И у Раста вывод типов гораздо мощнее чем у C++, C#, Java, я это продемонстрировал на нормальном коде
Ты это продемонстрировал на каноничном и чуть ли не единственном примере, который везде предлагают. И сравнивать так некорректно, так разные языки имеют разные ограничения и возможности. К примеру, в Rust нельзя написать аналог:
auto join = [](auto pref) {
return array { [=](auto... v) {
return (... + (pref + lexical_cast<decltype(pref)>(v)));
} };
};
cout << join(" "s).front()(1, 2., "3", "4"s);
cout << join(0.).front()(1, 2.);
Нет перегрузки, шаблонов, параметров значений, дефолтных аргументов и много другого. Легко уметь ограниченный набор возможностей и им манипулировать, но как только набор возможностей начинает расширятся - вылазят пачки проблем, а сложность резко возрастает, как c той же специализацией. Потому я бы сказал, что вывод типов есть везде, но каждый язык использует его с учетом своих остальных особенностей.
Исправление Serral, :
И у Раста вывод типов гораздо мощнее чем у C++, C#, Java, я это продемонстрировал на нормальном коде
Ты это продемонстрировал на каноничном и чуть ли не единственном примере, который везде предлагают. И сравнивать так некорректно, так разные языки имеют разные ограничения и возможности. К примеру, в Rust нельзя написать аналог:
auto join = [](auto pref) {
return std::array { [=](auto... v) {
return (... + (pref + lexical_cast<decltype(pref)>(v)));
} };
};
cout << join(" "s).front()(1, 2., "3", "4"s);
cout << join(0.).front()(1, 2.);
Нет перегрузки, шаблонов, параметров значений, дефолтных аргументов и много другого. Легко уметь ограниченный набор возможностей и им манипулировать, но как только набор возможностей начинает расширятся - вылазят пачки проблем, а сложность резко возрастает, как c той же специализацией. Потому я бы сказал, что вывод типов есть везде, но каждый язык использует его с учетом своих остальных особенностей.
Исходная версия Serral, :
И у Раста вывод типов гораздо мощнее чем у C++, C#, Java, я это продемонстрировал на нормальном коде
Ты это продемонстрировал на каноничном и чуть ли не единственном примере, который везде предлагают. И сравнивать так некорректно, так разные языки имеют разные ограничения и возможности. К примеру, в Rust нельзя написать аналог:
auto join = [](auto pref) {
return std::array { [=](auto... v) {
return (... + (pref + lexical_cast<string>(v) + '\n'));
} };
};
cout << join(" ").front()(1, 2., "3", "4"s);
Нет перегрузки, шаблонов, параметров значений, дефолтных аргументов и много другого. Легко уметь ограниченный набор возможностей и им манипулировать, но как только набор возможностей начинает расширятся - вылазят пачки проблем, а сложность резко возрастает, как c той же специализацией. Потому я бы сказал, что вывод типов есть везде, но каждый язык использует его с учетом своих остальных особенностей.