ЖИТЬ

аюсь написать свой собственный класс векторных шаблонов, но у меня есть некоторые проблемы при написании объявлений функций друзей.

Сначала я написал так:

template <typename T, typename Alloc = std::allocator<T>>
class vector {
public:
    friend bool operator==(const vector<T, Alloc>&, const vector<T, Alloc>&);
};

Но компилятор выдает предупреждение, что я объявляю не шаблонную функцию. Поэтому я изменил объявление друга на это:

template <typename T, typename Alloc = std::allocator<T>>
class vector {
public:
    template <typename E, typename F>
    friend bool operator==(const vector<E, F>&, const vector<E, F>&);
};

Пока все хорошо, но я думаю, что есть еще проблемы. Если я пишу так, я делаю всеoperator== функции, которые принимают два аргумента шаблона в качестве своих вспомогательных функций. Например,operator==(const vector<int>&, const vector<int>&) а такжеoperator==(const vector<double>&, const vector<double>&) оба будутvector<int>Друг функции.

Как правильно написать функции-друзья в классе шаблона?

Ответы на вопрос(1)

Ваш ответ на вопрос