template <typename T, template<typename> class FunObj>
class minimizer<T, FunObj<T> > {}
如果我们又重新定义了FuncObj, 上面的minimizer 定义则必须改变(改变模板参数)
template<tyepname T, int N>
class FunObj
{
}
,这个缺陷太重要,以至于我们不应该使用这种设计,除非:你确定FunObj非常稳定,模板参数(个数,顺序等)永远不会改变。
不然,会带来灾难性后果——改设计,一直改到最基本的那个设计。
更多参见:C++库研究笔记——使用函数模板还是类模板?+ 一个类型重复问题的两种解决方法