Jeśli przez „polimorfizmu typu Return” masz na myśli przeciążeń na podstawie typu wartości powrotu, nie jestem pewien o innych językach, ale dla C++ oto odpowiedź (dość dużo z pierwszej ręki):
Function typy powrotu nie wchodzą w grę w rozdzielczości przeciążania tylko dlatego, że Stroustrup (zakładam przy pomocy danych od innych architektów C++) chciał, aby rozdzielczość była zbyt niezależna od kontekstu. Zobacz 7.4.1 - "Przeciążanie i typ zwracania" z "Języka programowania w C++, wydanie trzecie".
Powodem jest to, aby zachować rozdzielczość dla jednostka operator lub funkcja wezwanie kontekst niezależne.
Chcieli, aby opierał się on tylko na tym, jak nazywano przeciążenie - nie w jaki sposób użyto wyniku (jeśli w ogóle był używany). Rzeczywiście wiele funkcji wywoływanych jest bez użycia wyniku, a wynik może być użyty jako część większego wyrażenia. Jeden czynnik, który jestem pewny, wszedł w grę, gdy zdecydowali, że to, że jeśli typ powrotu był częścią rozdzielczości, byłoby wiele wezwań do przeciążenia funkcji, które wymagałyby rozwiązania za pomocą złożonych reguł lub musiałoby mieć rzut kompilatora błąd, który wywołanie było niejednoznaczne.
A Pan wie, rozdzielczość przeciążenie C++ jest na tyle skomplikowane, gdyż stoi ...
Typ wnioskowania będą zawarte w C++ 0x i różni się od sugerowanego polimorfizmu typu powrotu. –