Ich versuche auf geschützte Variablen einer Template-Klasse mit verschiedenen Template-Parametern zuzugreifen. Eine Friend-Deklaration mit Vorlagenparametern gibt den folgenden Fehler:
mehrere Vorlagenparameterlisten sind nicht erlaubt
Mein Code ist
%Vor%Wenn ich die Schutz- und Freundschaftsdeklaration entferne, funktioniert es.
Vom Standard: 14.5.3 / 9 [temp.friend], "Eine Freundschaftsvorlage darf nicht als Teilspezialisierung deklariert werden.", so dass Sie sich nur mit allen Instanzen einer Klassenvorlage oder spezifischen vollständigen Spezialisierungen anfreunden können.
In Ihrem Fall müssen Sie die Klassenvorlage als Freund deklarieren, wenn Sie mit Instanziierungen mit einem freien Vorlagenparameter befreundet sein möchten.
z.B.
%Vor%Das Folgende scheint zu funktionieren und erklärt effektiv alle MyClass-Typen als Freunde miteinander.
%Vor%