A C++ Inversion of Control Framework