В чем смысл оператора == <>?
Взяв какой-то код моего коллеги, я пришел к следующему:
friend bool operator==<>(ValueIter<Type> const &rhs, ValueIter<Type> const &lhs);
Он объявлен в классе шаблона:
template<typename Type>
class ValueIter: public std::iterator<std::bidirectional_iterator_tag, Type>
Может ли кто-нибудь сказать мне, что означает символ ==<>
? Я ожидаю, что это с чем-то связано с оператором !=
.
Ответы
Ответ 1
Он выглядит как два, operator==
- это полный экземпляр шаблона или специализация <>
.
Я видел только несколько подобных в дикой природе.
Учитывая friend
, класс, вероятно, подружился с оператором шаблона.
Если у вас возникают ошибки компоновщика, см. этот ответ, почему.
Ответ 2
Ваш вопрос неполный.
Предположительно, в некотором контексте в рамках кода, который вы просматриваете, существует шаблонная функция operator==()
.
Затем в каком-то классе определенная специализация шаблона operator==()
объявляется как friend
.
Без контекста, который вы не указали (т.е. из предыдущего определения шаблона или определения охватывающего класса), невозможно дать более конкретный ответ. Существует слишком много возможностей для шаблона или соответствующих специализаций.
Ответ 3
С
template <typename T> class ValueIter;
template <typename T>
bool operator==(ValueIter<T> const &rhs, ValueIter<T> const &lhs);
Внутри 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
))
==<>
используется во второй точке и действительно == <>
.