Alexandrescuは非常に興味深いアイデア(タイプリスト、ポリシーベースのクラステンプレートなど)を持っていましたが、それらの多くは、移植性と正確性について幅広いコンパイラーでテストされるとともに、ブーストで改善されました。
これらの理由だけで、可能な限りブーストを優先することをお勧めします。とは言うものの、現代のC ++デザインは、C ++の柔軟性について多くの洞察を提供し、多くの一般的なプログラミングの問題に取り組むために1人の人の心(非常に良いもの)を調べます。
たとえば、ポリシーベースのスマートポインターは非常に優れたアイデアですが、ブーストの作成者がshared_ptrとscoped_ptrをこのように実装しないことを選択した理由を見つけることができます。
A.パラメータ化はユーザーを思いとどまらせます。shared_ptrテンプレートは、大規模なパラメーター化なしで一般的なニーズを満たすように慎重に作成されています。いつの日か、非常に使いやすく、誤用しにくい、高度に構成可能なスマートポインタが発明されるかもしれません。それまでは、shared_ptrは、さまざまなアプリケーションに最適なスマートポインターです。(ポリシーベースのスマートポインターに関心のある方は、AndreiAlexandrescuによるModernC ++ Designをお読みください。)
多種多様なスマートポインターが必要であり、あなたとあなたのチームがテンプレートのパラメーター化を幅広く使用することに慣れている場合は、スマートポインターを実装するためのポリシーベースのアプローチが役立つ可能性があります。ただし、scoped_ptrとshared_ptr(およびweak_ptr)は、非常に完全に機能する傾向があります。ポリシークラスの組み合わせ動作は、さまざまな有用な組み合わせがあるものにおそらく適しています。
それにもかかわらず、ブーストが対処していないアレクサンドレスクからのいくつかの興味深い提案がまだあります。たとえば、MOJOは、コンパイラーがmoveコンストラクターの実装を改善するまで、またはC ++ 0xからの右辺値参照を使用できるようになるまで、真に有用です。彼はまた、メモリアロケータの実装について非常に興味深い考えを持っています。
質問に関しては、私たちは商業プロジェクトでモジョに必要なロキの部分を使用しますが、それが適切な場合はほとんどブーストします。