A C++ IoC container