templates templates....
-
Hi, ich habe folgenden compilenden code:
template<typename typeA> class A { A.CODE template<typename typeB> class B { B.CODE }; A.CODE };, würde den code von B aber lieber außerhalb von A hinschreiben, also
template<typename typeA> class A { A.CODE template<typename typeB> class B; A.CODE }; template<typename typeA> template<typename typeB> class A<typeA>::B<typeB> { B.CODE };, krieg aber beim besten Willen die Syntax nich hin.
Allgemein: Sowohl A als auch B sollen als template argumente typen übergeben bekommen, also z.B. float oder int; der typ von B ist dabei von A völlig unabhängig.
Wär über konstruktive Vorschläge sehr dankbar
-
template<typename typeA> template<typename typeB> class A<typeA>::B<typeB> { B.CODE };Damit wird eine partielle Spezialisierung des Templates A<typeA>::B deklariert. Allerdings stimmt die Argumentliste <typeB> mit der impliziten Argumentliste des Primärtemplates ein - das ist nicht erlaubt und würde auch das Primärtemplate überflüssig machen. Da du hier aber gar nicht spezialisieren willst, sondern nur die Definition des Primärtemplates A<typeA>::B angeben willst, darf keine Argumentliste benutzt werden:
template<typename typeA> template<typename typeB> class A<typeA>::B { ... };
-
Ahh funktioniert und ne Erklärung gleich mit dabei : D
Vielen Dank,war seit Tagen auf der Suche nach eben dieser Antwort.