Stroustrup has written quite a bit fighting against complexity:
> There are two fundamental ways of approaching the unavoidable uncertainty in a design:
> • add “improvements” until everybody feels well served
> • cut until there is nothing left to cut and all there is left is principled and fundamental
> After both approaches, experience will show the need for changes (pre-release) and additions (all we can do post-release). I clearly favor the second approach and consider it proper engineering based on principles and feedback. I consider the former hacking and politics. In a standards process, compromises are necessary, but we must try to ensure than compromises are not between irreconcilables or just union-of-features bloat.
> Stability is a feature as well as a serious design constraint. [....] I can summarize most people’s attitude:
> • “C++ is too complex. We need to make it smaller, simpler, and cleaner.
> • And please add these two features.
> • And whatever you do, don’t break my code!”