型パラメータを持つポリシークラスとメタ関数クラス

Modern C++ Designでは型パラメータを持つポリシークラスをホストクラスに引き渡すときの方法としてtemplate templateパラメータで引き渡すことを提案していた.でも,template templateパラメータは,特にarity(引数の個数)が完全に一致していないとならないという点で非常に使い勝手が悪いので,出来れば使いたくないなぁという印象を受ける.
Boost.MPLで定義されるメタ関数クラス(applyという内部クラステンプレートを持つクラスまたはクラステンプレート)がこのtemplate templateパラメータに代わる柔軟な機構と考えられるけれども,どうやら標準での提案でもtemplate templateパラメータではなくてメタ関数クラスを積極的に使っていく流れがあるように見える.
http://tinyurl.com/68o3h
(comp.lang.std.c++ 2004/10/25~ "Policy Based Smart Ptr (n1681)")
上の記事の参照元articleは下.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1681.pdf