C++ はある程度は汚いものだろう。
隅々まで綺麗にしようと腐心するよりは
少なくとも部品のインターフェイスくらいはまともにして
外側に対しては綺麗なふりをするくらいが手頃な妥協点だと思う。
逆にミクロ的にスマートに書けていても
抽象化が駄目だと使いにくいよ。

内も外も綺麗ならそれに越したことはないけど
そうもいかないのが現実だからね。