>Right now I am a bit stuck, because it looks like the serious drawback>to the tree-approach [to generic function dispatch] is that it effectively>prevents any modification to function dispatch during runtime. You would>not be able to add or remove functions for example.

Not without regenerating the code tree. LLVM supports JIT compilation
on the major supported architectures (though not on all of them IIRC).
And of course you can use the reflection APIs if you target JVM or
CLR. There are also embeddable C (though currently not C++) compilers
like libtcc and also embeddable assemblers.