My hope would be that this is possible since my entity_system class should store a vector of all available systems for dispatching messages to the systems using virtual functions. I have it implemented in VS 2012 and it works there. Then I tried to use the same code on VS 2010 and got random crashes. I suspect the cast to base_system<base_component>* is not actually valid C++. So my question is, is the cast valid? Should I use another solution?