Gibt es eine Möglichkeit, einen rekursiven Vorlagentyp zu erhalten? Ich habe einen Container, für den ich eine zugrunde liegende Speicherstrategie angeben möchte. Die innere Vorlage muss jedoch den Typ der äußeren Vorlage verwenden, sodass in der Typendefinition eine Schleife entsteht, die nicht spezifiziert werden kann.Ein rekursiver Vorlagentyp für eine Container-/Typenname-Weiterleitung
über das, was ich will:
template<typename C>
struct inner {
C * object[16];
};
template<typename T, typename Inner>
struct container {
T value;
Inner<container> holder;
};
C++ 11-Lösungen sind in Ordnung (obwohl ich immer noch auf gcc 4.6.3 bin).
Gibt es etwas namens "seltsam rekursive Vorlage Muster" (CRTP)? Vielleicht wird es helfen, nicht sicher ... http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern – Jimbo
Was sind die neuen Verhaltensweisen, die dieser rekursive Datentyp haben wird, die es von einer verknüpften Liste unterscheiden? – abiessu
@abiessu, meine aktuelle Verwendung ist eigentlich für einen Radix-Baum. Jeder Knoten hat einen Index, wie er zum nächsten Knoten gelangt, und "inner" gibt die Strategie für diesen Index an. Das heißt, die Vorlage ermöglicht es zu sagen, wie die Kinder verwaltet werden, im Gegensatz zu einer festen Rot-Schwarz-, Hash- oder anderen Strategie. –