So, this basically would boil down to something like C++ templates, with he extra requirement that templates must be instantiated explicitly.