(这个问题对任何愿意尝试的人都有好处)
嗨,我已经定义了以容器类为参数的重载模板函数
(这里 CntrlCls1 = RWTValOrderedVector和 CntrlCls2 = RWTPtrSortedVector)
template<Class X> void func(CntrCls1<X>* ){}
template<Class X> void func(CntrCls1<X*>* ){}
template<Class X> void func(CntrCls2<X>*){}
定义后我调用函数如下
func(&ABC);
其中 ABC 是CntrCls1<*>类型的实例(即它是一个指针容器)
现在这在我的计算机上编译得很好,但是当我在不同的系统上编译时,由于某种原因,编译器试图用 CntrlCls2 参数实例化函数模板,结果给出错误。
CtrCls1 和 CtrCls2 是不相关的容器。
更新:我正在使用 VS 2008 在两个系统上进行构建,所以这应该不是问题。
Update1:我在用 CtrCls2 参数注释掉函数模板后尝试重新编译现在编译正在尝试实例化第一个函数(即没有指针):-(