我有一个模板类 template< typename T, typename R>
. R是类型 victor< Tgt;
或 list< Tgt;
。
我希望我的班级超载 < <
运算符,这样,如果它是矢量,我将使用在 < <
运算符中建造的操作员来提高效率,如果有列表,我将使用迭代器执行它。
对我来说,这听起来像一个工作 模板专业化 所以我想写这样的东西:
template<typename T, typename R>
T& tContainer_t<T, R>::operator[]( unsigned i )
{
//TODO with iterators
}
template<>
T& tContainer_t::operator[]<T, std::vector<T*> >( unsigned i )
{
// TODO with built in [] operator
}
这是错误的, 而编译者不允许这样做 。
是否有办法让它发挥作用,或者我是否应当使用 typeid ()
来区分运行时的两个对象并据此行事?