LINUX.ORG.RU

История изменений

Исправление 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 той же специализацией. Потому я бы сказал, что вывод типов есть везде, но каждый язык использует его с учетом своих остальных особенностей.