Alb*_*oer 20 c++ templates operator-overloading c++11
看一下我的同事的一些代码,我得到了以下内容:
friend bool operator==<>(ValueIter<Type> const &rhs, ValueIter<Type> const &lhs);
Run Code Online (Sandbox Code Playgroud)
它在模板类中声明:
template<typename Type>
class ValueIter: public std::iterator<std::bidirectional_iterator_tag, Type>
Run Code Online (Sandbox Code Playgroud)
有人能告诉我==<>符号表示什么吗?我希望它与!=运营商有关.
Nia*_*all 32
它看起来像两个,operator==那是一个完整的模板实例化或专业化<>.
我在野外只看到过这样的一些.
鉴于此friend,该类可能与模板运算符成为朋友.
如果您遇到链接器错误,请参阅此答案以了解原因.
你的问题不完整.
据推测,在您正在检查的代码中的某些上下文中,存在模板化operator==()函数.
然后在某个类中,该模板的特定特化operator==()被声明为a friend.
如果没有您没有给出的上下文(即前面的模板定义或封闭类定义),则无法给出更具体的答案.模板或相关专业化的可能性太多了.
同
template <typename T> class ValueIter;
template <typename T>
bool operator==(ValueIter<T> const &rhs, ValueIter<T> const &lhs);
Run Code Online (Sandbox Code Playgroud)
内 template <typename T> class ValueIter
friend bool operator==(ValueIter const &rhs, ValueIter const &lhs);
并friend bool operator==(ValueIter<T> const &rhs, ValueIter<T> const &lhs);
添加友谊非模板操作.
friend bool operator==<>(ValueIter const &rhs, ValueIter const &lhs);,
friend bool operator==<>(ValueIter<T> const &rhs, ValueIter<T> const
friend bool operator==<T>(ValueIter const &rhs, ValueIter const &lhs);,
friend bool operator==<T>(ValueIter<T> const &rhs, ValueIter<T> const
加友谊的模板运算符(只为与之相匹配的类型T)
template <typename U> friend bool operator==(ValueIter<U> const &rhs, ValueIter<U> const &lhs);为模板操作符添加友谊(对于任何类型U(可能不同T))
==<>用在第二点,真的== <>.