C ++ - Vorlage erbt von der nicht spezialisierten Version
Ich habe versucht, ein Problem zu lösen, aber eine andere Lösung gefunden. Ich möchte jedoch aus Neugier wissen, ob Folgendes möglich ist:
template< class > struct S;
template< > struct S< Foo > : struct< Foo > {};
Ich möchte in der Lage sein, eine nicht spezialisierte Struktur von einer spezialisierten Struktur zu erben. Das obige Beispiel funktioniert nicht, da die geerbte Struktur eine spezialisierte Struktur ist, die zu einer unendlichen Rekursion führt.
Eine mögliche Lösung war das Hinzufügen eines zweiten Vorlagenparameters, z. B. bool specific, sodass der Standardwert false ist, und der Parameter true für die spezialisierte Vorlage. Dies führt jedoch zu Problemen, da für die Instanziierung zusätzliche Parameter angegeben werden müssen.
Gibt es eine andere Möglichkeit, das oben Gesagte umzusetzen?
Das ursprüngliche Problem bestand darin, eine Matrix von Matrizen zu implementieren, bei der die Matrix selbst zusätzliche Operatoren haben kann, je nachdem, ob die konstituierenden Matrizen diese Operatoren haben. Ich hoffe, das ist sinnvoll. Zur selben Zeit müssen verschiedene spezialisierte Matrizen zur selben Basisklasse gehören und denselben Namen behalten, obwohl sie unterschiedliche Template-Parameter haben. Ich habe gedacht, es könnte eine Möglichkeit geben, dies mit enable_if zu tun und Traits einzugeben