K>Хотя уже на этом примере видно, что такой подход далеко не всегда применим: скажем, умножать два вектора можно по-разному (скалярное или векторное умножение).
Согласен, выражение реальной математики в виде перегруженных операторов ограничивается малым числом операторов в программировании, в которые можно отобразить математические символы, которых намного больше. Получается только +, -, частично *, /.
Я писал с использованием перегрузок большую библиотеку для 2D графики, там например нужно четко проводить границу между вычислениями с плавающей точкой и целочисленными вычислениями, это далеко от математических формул.
Все равно получаются цепочки вызовов функций типа такого
Оператор сложения для массивов векторов просто побоялся написать — что он будет означать — объединить эти массивы в один один за другим или попарно сложить в них точки?