== <>运算符的含义是什么?

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,该类可能与模板运算符成为朋友.


如果您遇到链接器错误,请参阅此答案以了解原因.

  • 让我想起运算符` - >`的[这个问题](http://stackoverflow.com/q/1642028/3747990). (12认同)
  • 它确实是运算符==的模板.我在模板类之前看过这个.当删除<>时,您将收到一个错误,指示该函数是非模板函数. (3认同)

Pet*_*ter 6

你的问题不完整.

据推测,在您正在检查的代码中的某些上下文中,存在模板化operator==()函数.

然后在某个类中,该模板的特定特化operator==()被声明为a friend.

如果没有您没有给出的上下文(即前面的模板定义或封闭类定义),则无法给出更具体的答案.模板或相关专业化的可能性太多了.


Jar*_*d42 5

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))

==<>用在第二点,真的== <>.