which doesn't look that much worse.
Of course not.
But you need to implement everything, including memory management, template magic, component containers, introspection, components ... Next you need to make a build, download, build and install the libraries, etc...
Further, you need to implement Velocity type, mass type (even if a simple struct it's 5 lines of code) and write all the extra facilities (serialization, type conversions, initialization) for each of them.
And after you've done all of that, wrote thousands of lines of code, spent hours administering the project and dealing with bugs, all you will have to show for it will be definition of a component which contains a vector and a float.
Dynamic languages give you this out of box.
They aren't solution to everything and come with a possibly unacceptable penalty for projects above certain size. But if trying to experiment with design they are definitely worth looking into it.
Beauty of existing VMs is you already have that. No need to have someone write it, debug it, test it, build it, install it, tweak it, tune it, .... Make an empty file, write 20 lines of code, 18 of which will be the design itself.
Maybe I'll refactor my implementation a bit and upload it somewhere
a flexible game dev kit.
If flexibility is a priority, then it's been done. Instead of reinventing the plumbing, just provide a few helper classes for drawing to canvas or webgl.
Alternatively, use Lua, provide a bridge to SDL or similar.
Writing yet another component container , especially a flexible one, is not the most productive direction.