The title should be “teaching a well-experienced C++ developer true OOP/SOLID”.
I’ve finally managed to understand how to use an IoCC and how using it removes a large number of if statements from your solution.
Even better, as a C++ developer I was constantly using conditional compilation to separate platform-specific code. Not anymore: with an IoCC all you need to to is to take your time, abstract the platform-specific code behind an interface and configure the IoCC to use the platform-specific module. I think one can easily configure the build process to remove all code that’s not needed and thus generating smaller installation packages, but I haven’t tried this yet.
I must say the feeling is exhilarating.