partielle Spezialisierung der STL-Container
-
Ich hab ne Eigenimplementation eines referenzzählenden Smart-Pointers.
Den verwende ich ziehmlich oft in den verschiedenen STL-Containern. Da meine Proggies immer recht riesig werden hab ich mich daran erinnert, im Stroustroup mal was gelesen zu haben, dass er nen Container partiell auf Zeiger spezialisiert um so zu Verhindern, dass der Compiler für jeden Zeigertyp das Template eigens typsiert, ertzeugt etc.Ja, das macht er auch so. Nur leider gehts in seinem Beispiel um ne imaginäre, kleine, nicht-standard Vektor-Klasse.
Ich würde jetzt gern so ne partielle Template-Spezialisierung für vector, list, dequeu etc. in verbindung mit meinem Smartpointer haben. Hab natürlich aber keine Lust, da jetzt jede dieser STL-Klassen anlangen und irgendwie mit viel Handarbeit und copy&paste umzumodeln.
Gibts da ne möglichkeit das irgendwie anders zu machen.
-
hm, hat keiner nen plan?
Frag mich inzwischen, ob das ganze überhaupt funzt. Stroustroups beispiel ist nämlich schon ein bisschen komplizierter:
Er macht erst ne vollständige Spezialisierung template<> class Vector<void*> und dann ne partielle Spezialisierung template<class T> class Vector<T*> als private Ableitung von ersterer.
Da hab ich ja dann doch für meinen Smartpointer template<class T> class SmartPointer garkeine Chance. Oder?
-
Naja, Du könntest schon ne Spezialisierung auf
vector<SmartPointer<T> > machen.
Die Frage ist: Wie speicherst Du den dann?
Gibt es irgendwas wo Du sie günstig hin/zurückcasten kannst?
Sowas ähnliches wie T* --> void * --> T* nur eben für Deine SmartPointer