En G+ discutimos el tema de la sobrecarga de funciones según su retorno.
Lo único más o menos viable (y que tiene problemas y no aporta nada, más que un capricho del buen Agustín) es que el compilador evalúe el contexto de invocación a la función
Código Delphi
[-]Foo1.Bar VarString := Foo1.Bar; VarInteger := Foo1.Bar;
Obvio que hay muchos problemas. Y serían pocos los casos en los que el compilador podría ayudar, y muchos los que debería reportar un error de ambigüedad.
Básicamente termina pasando lo que enunciaste en el hilo del with. Todo elemento que nos dé la posibilidad de escribir código más elegante, bienvenido sea, siempre y cuando no comprometa la ambigüedad.
Imaginarse código bar*bar + bar.. termina siendo un rompecabezas para el humano, y algo que sólo el compilador puede entender
Y eso no es para nada útil
Roman con respecto a la pregunta es curiosidad; en G+ votaron apenas unas 100 personas, pero aún así, hay un 20% que prefiere la otra alternativa. Supongo que es cuestión de gustos