История изменений
Исправление a--, (текущая версия) :
Эта ветка обсуждения началась с вопроса как ещё при проектировании языка заложить возможность развиваться не накапливая «грехи».
Один из вариантов ответа — правильно вводить новые фичи. Как антипример пойдет конечно же с++.
ЕМНИП сначала была только перегрузка функций: f(int), f(float), f(double). Потом завезли шаблоны, и появилась возможность template<class T> f(T arg). И вместо того, чтобы эти две возможности сделать исключающими друг друга по какому-то разумному принципу, их решили сделать совместно используемыми, и для этого навертели такие правила, которые вряд ли кто-то помнит полностью. (И еще ЕМНИП была статья Александреску, как эти правила сломать, стремясь к чему-то хорошему).
Исходная версия a--, :
Эта ветка обсуждения началась с вопроса как ещё при проектировании языка заложить возможность развиваться не накапливая «грехи».
Один из вариантов ответа — правильно вводить новые фичи. Как антипример пойдет конечно же с++.
ЕМНИП сначала быыла только перегрузка функций: f(int), f(float), f(double). Потом завезли шаблоны, и появилась возможность template<class T> f(T arg). И вместо того, чтобы эти две возможности сделать исключающими друг друга по какому-то разумному принципу, их решили сделать совместно используемыми, и для этого навертели такие правила, которые вряд ли кто-то помнит полностью. (И еще ЕМНИП была статья Александреску, как эти правила сломать, стремясь к чему-то хорошему).