템플릿 중첩 클래스 프렌드 함수를 외부에서 정의하는 방법?

익명 사용자의 이미지

template <typename T>
class Vector
{
public:
    Vector(int _capacity = 0);
    Vector(const Vector &input);
    Vector &operator=(const Vector &input);
    ~Vector();
 
    class Iterator
    {
    public:
        Iterator();
        T &operator*() const;
        Iterator operator+(int num) const;
        Iterator operator-(int num) const;
        Iterator &operator+=(int _num);
        Iterator &operator-=(int _num);
        int operator-(const Iterator &_it) const;
        Iterator &operator=(const Iterator &_it);
        friend typename Vector<T>::Iterator operator+(int num, const typename Vector<T>::Iterator &_it);
        Iterator &operator++();
        Iterator operator++(int);
        Iterator &operator--();
        Iterator operator--(int);
        bool operator==(const Iterator &_it) const;
        bool operator!=(const Iterator &_it) const;
        bool operator>(const Iterator &_it) const;
        bool operator>=(const Iterator &_it) const;
        bool operator<(const Iterator &_it) const;
        bool operator<=(const Iterator &_it) const;
 
    private:
        Iterator(const Vector *_vector, unsigned int _index);
        const Vector *vector;
        unsigned int index;
        friend class Vector;
    };
 
    Iterator begin() const;
    Iterator end() const;
    bool empty() const;
    int size() const;
    int capacity() const;
    void resize(int _size, const T &val = 0);
    void reserve(int _capacity);
    void assign(const Iterator &start, const Iterator &end);
    void assign(int _size, const T &val);
    void insert(int index, const T &val);
    void push_back(const T &val);
    T pop_back();
    T &at(int index) const;
    T &operator[](int index) const;
    T &front() const;
    T &back() const;
    void erase(int index);
    void clear();
 
private:
    T *vec;
    unsigned int vecSize;
    unsigned int vecCapacity;
};
 
template <typename T>
inline typename Vector<T>::Iterator operator+(int num, const typename Vector<T>::Iterator &input) { return Iterator(input.iter + num); }

위와 같은 코드를 짯는데...

"message": "friend declaration ‘Vector::Iterator operator+(int, const Vector::Iterator&)’ declares a non-template function [-Wnon-template-friend]"

과 같은 경고를 출력하고 되지를 않내요... 혹시 해결방법좀 아시는분 계실까요....