Почему в С++ нет многообразных методов?

Я прочитал много статей о том, как реализовать multimethod в С++:

почему нет многоточия в С++?

почему они не поддерживаются стандартом С++?

Ответ 1

Прямо от устья лошади:

"Я с сожалением отказался от мульти-методов, потому что мне понравилась эта идея, но я не мог найти приемлемую форму, чтобы ее принять".

Bjarne Stroustrup, The Design and Evolution of С++ (p297)

И позже:

"Мульти-методы - одно из интересных, что-то вроде С++. Могу ли я спроектировать и реализовать их достаточно хорошо в то время? [...] Какую еще работу можно было бы отменить, чтобы предоставить время для разработки и внедрить мульти-методы?"

(p298f)

В общем, всякий раз, когда вы чувствуете желание узнать, почему какая-либо конкретная функция С++ была реализована или не была реализована, или была реализована так, как она есть сейчас, и если эта функция предшествует стандартизации, вы хотите прочитать D & Е.

Ответ 2

Как заметил Бьярне несколько раз, когда люди критикуют С++, он обычно запускает что-то вроде: "С++ слишком большой, слишком сложный, имеет слишком много функций, и его слишком сложно изучить - вы должны действительно работать делая это меньше и проще. О, и пока вы работаете над этим, у меня также есть эта замечательная идея для функции убийцы, которую вы должны добавить!"

Ответ 3

Просто потому, что это можно сделать, это не значит, что это не так. Одна критика С++ связана с тем, что "Страуструп взял все, о чем слышал, и попытался включить его".

Плюс, как говорит Раймонд Чен: "Каждая функция начинается с -100 очков". То есть, прежде чем вы спросите, почему С++ не имеет таких вещей, вы должны подробно объяснить, почему они нужны. В противном случае ваша функция остается на отрицательной территории из-за связанных с ней затрат.