У меня есть шаблон шаблона и шаблон оператора, которому необходимо получить доступ к его частному полю. Я могу сделать друг шаблона:Конкретный экземпляр экземпляра оператора для конкретного оператора
template <typename T>
class A {
int x;
template <typename U>
friend bool operator==(const A<U>& a, const A<U>& b);
};
template <typename T>
bool operator== (const A<T>& a, const A<T>& b) {
return a.x == b.x;
}
int main() {
A<int> x, y;
x == y;
return 0;
}
Но это можно сделать только operator==<T>
друг для A<T>
и не делает operator==<int>
друга A<double>
?
не похоже на работу http://ideone.com/vnu3QR – RiaD
Это не ошибка компилятора. Есть места, где этот синтаксис действителен, но это не один из них. –
@AlanStokes, ну да, этот синтаксис здесь полностью применим. Почему бы вам не попробовать себя? Просто поставьте 'operator ==' перед классом. – ixSci