>>>возможность перегрузки операторов повлечёт известные проблемы языков с подобным подходом, такие как:
>>>1) Усложнение понимания кода программистомНаоборот. У меня на работе один из основных языков Java, и вот как-раз распутывать комбинации методов из BigDecimal add, multiply, subtract,.. кандидат номер один в улучшение читаемости, при наличии перегрузки операторов.
>>>2) Невозможность реализовать вывод типов.
Вообще не вижу связи, пример?
По поводу грепа, в Rust зависимости через cargo приходят в виде исходников, загрузив их, я точно так же могу погрепать реализацию используемого мной struct(класса) - операнда, и раз уж я буду использовать этот операнд я обязательно посмотрю его реализацию в исходном коде, и опять же не важно, будет там просто метод add или определена перегрузка оператора - я посмотрю signature реализации.
По вашему, если будет метод, и в языке не было бы перегрузки оператора, то Вы его не проверяете!? (конечно учитывая ваше желание работать в notepad.exe вполне может быть ваш стиль)
>>>А ваша IDE может и не подсветить Вам, что, мол, Вы ошибочно применили не ту функцию, потому что шаблон перегруженной функции совпал с каким-то другим. В случае же, если перегрузки нет - Вы наверняка получаете ошибку на этапе компиляции (а скорее всего даже раньше: IDE может Вам и подсветить строчку, предупреждая о неправильном типе).
Я вам рекомендую не заниматься пустой демагогией, а попробовать то как это реализовали в RUST, тем более что выше я просто уже скинул конкретные ссылки, где за час не зная RUST, можно понять как это реализовано.