Ich habe eine Klassenvorlage und eine Operatorvorlage, die auf ihr privates Feld zugreifen muss. Ich kann eine Vorlage Freund machen:Friend spezifische Vorlage Instanziierung von Operator
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;
}
Aber ist es möglich, nur operator==<T>
Freund für A<T>
zu machen und nicht operator==<int>
Freund von A<double>
machen?
scheint nicht zu funktionieren http://ideone.com/vnu3QR – RiaD
Dies ist kein Compiler-Fehler. Es gibt Orte, wo diese Syntax gültig ist, aber das ist keiner von ihnen. –
@AlanStokes, nun ja, diese Syntax ist hier vollständig gültig. Warum versuchst du es nicht selbst? Setzen Sie einfach 'operator ==' vor die Klasse. – ixSci