operator= 함수를 템플릿으로 만들 수 없나요?

dltkddyd의 이미지

클래스 템플릿에서 operator= 함수를 프렌드로 지정해 사용하려 합니다. 그런데 operator= 함수를 전역에서 템플릿으로 만들면 계속 컴파일 에러가 뜹니다.

template
T1& operator=(T1& left, T2& right);

template
struct MyPair {
friend MyPair& operator=(MyPair& left,MyPair& right);
};

template
MyPair& MyPair::operator=(MyPair& left,MyPair& right) {;
//정의합니다.
return left;
}

컴파일 하면 operator= 함수가 비정적멤버함수여야 한다는 에러메지시 출력됩니다.

jick의 이미지

Template으로 만드는 것은 가능합니다. 클래스 안에서 템플릿으로 선언하세요.

http://stackoverflow.com/questions/871264/what-does-operator-must-be-a-non-static-member-mean