mvd stands for Multiple Virtual Dispatch. It lets you
write functions that take any number of arguments of
objects and match based on the dynamic type of each
of them.
The return values must be compatible; mvd will return
the least specialized static type of the return values
(most likely the shared base class type of all return types,
or void if there isn't one).
All non-class/interface types should be compatible among overloads.
Otherwise you are liable to get compile errors. (Or it might work,
that's up to the compiler's discretion.)
mvd stands for Multiple Virtual Dispatch. It lets you write functions that take any number of arguments of objects and match based on the dynamic type of each of them.
The return values must be compatible; mvd will return the least specialized static type of the return values (most likely the shared base class type of all return types, or void if there isn't one).
All non-class/interface types should be compatible among overloads. Otherwise you are liable to get compile errors. (Or it might work, that's up to the compiler's discretion.)