Tôi có một lớp mẫu được định nghĩa như thế nàyđiều hành quá tải bên ngoài một lớp mẫu với chuyển đổi tiềm ẩn
template<class T> class Wrap
{
/* ... */
public:
Wrap(const T&);
/* other implicit conversions */
/* ... */
};
Tôi muốn xác định tất cả các toán tử so sánh cho lớp này bên ngoài lớp học như thế này
template<typename T> bool operator == (const Wrap<T>&, const Wrap<T>&)
{
// Do comparison here
}
Tuy nhiên, tuyên bố này không hỗ trợ chuyển đổi tiềm ẩn của const T&
hoặc bất kỳ loại nào khác, thành const Wrap<T>&
.
Vì vậy, câu hỏi của tôi là làm thế nào để làm cho nó hỗ trợ chuyển đổi tiềm ẩn khi một trong các toán hạng là loại Wrap<T>
và khác không phải là. Tôi không muốn viết nhiều khai báo của mỗi toán tử cho mỗi hoán vị có thể.
Câu trả lời hay. Tôi đoán u bị mất tham chiếu cho 'tc2' mặc dù. – user1353535