@INPROCEEDINGS{BCV05,
title = {{Translating Double-Dispatch into Single-Dispatch}},
author = {Bettini, Lorenzo and Capecchi, Sara and Venneri, Betti},
booktitle = {Proceedings of the Second Workshop on Object Oriented Developments (WOOD 2004)},
pages = {59-78},
abstract = {Goals of flexibility and re-usability in typed object-oriented languages suggest
the requirement of double dispatch, i.e., the mechanism of dynamically selecting
a method not only according to the run-time type of the receiver (single
dispatch), but also to the run-time type of the argument. However, many
mainstream languages, such as, e.g., C++ and Java, do not provide it, resorting
to only single dispatch. In this paper we present a general technique for
adding double dispatch as a type-safe language feature, so yielding dynamic
overloading and covariant specialization of methods, without extending basic
semantics. To this aim we introduce a toy core language, extended to a full
form of (non encapsulated) multi methods. Then we define a translation
algorithm from multi methods to the core language, that implements double
dispatch by using only standard mechanisms of static overloading and single
dispatch. As a main feature, our translation preserves type safety, it uses
neither RTTI nor type downcasts and does not introduce crucial overhead during
method selection.},
publisher = {Elsevier},
series = {ENTCS},
volume = {138},
number = {2},
year = {2005},
url = {http://rap.dsi.unifi.it/bibliography/files/doubledisp.pdf},
}