c++ builder中是一个模板类是否无法在其声明时用它特化另一个模板类?

时间:2021-05-31 20:02:42
代码如下:
template<class T, int NBLK>
class Segtor : public MoveableAndDeepCopyOption< Segtor<T, NBLK> > {
public:
typedef ConstIIterator<Segtor> ConstIterator;//这里E2299 Cannot generate template specialization from 'ConstIIterator<V>'
typedef IIterator<Segtor>      Iterator;//这里也一样
};
我猜这错误应该是Segtor类型还不存在所以无法特化。
但要怎么改才好?

4 个解决方案

#1


得,猜了下原因,九成是因为cb中的模板类不写明特化是认不出的,

试了一下,还真是这样。。。。有点无语了。。。。。

哪位再进来下,帮忙结论了。

#2


楼主这是发福利呢,
方便的话写出正确的地方,以便后人参考

#3


没看懂...

#4


其实就是把Segtor改成Segtor<T, NBLK>,
不能像vc或gcc中一样省略。
这些都还好猜点,现在真碰到个想不明白的模板问题了。。。

#1


得,猜了下原因,九成是因为cb中的模板类不写明特化是认不出的,

试了一下,还真是这样。。。。有点无语了。。。。。

哪位再进来下,帮忙结论了。

#2


楼主这是发福利呢,
方便的话写出正确的地方,以便后人参考

#3


没看懂...

#4


其实就是把Segtor改成Segtor<T, NBLK>,
不能像vc或gcc中一样省略。
这些都还好猜点,现在真碰到个想不明白的模板问题了。。。