C++ when it is practiced in a &quot;standard&quot; way using the standard library and all the standard advices (such as using boost libraries whenever possible) employs a style of programming that generates a _lot_ of intermediary, supposedly zero-cost abstractions that the optimiser then have to work hard to remove.<p>This is why I say supposedly zero-cost because although your users may not pay for them, you as a developer will pay for them through either slow compilations or alternatively slow debug builds.<p>C++ can be a good tool if you have the right discipline, however the discipline is hard to follow if you bring a lot of dependencies in.