Open multi-methods for C++