V
Spacelord schrieb:
Ich kann trotzdem nicht nachvollziehen warum man ein Template schreibt um anschliessend mit irgendwelchen schrägen Tricks sicherzustellen dass das Template nur mit einem Typ(und seine Ableitungen) instanziert werden kann.
templates haben null overhead. außerdem ist es gar nicht möglich bei manchen sachen, das durch vererbung zu lösen. so haste zum beispiel die sizeof-information verloren, wenn du nen basisklassenzeiger übergibst statt des genauen treffenden zeigers. und wenn deine funktion beides braucht, sizeof-info UND will was virtuelles der basisklasse aufrufen, denkt man gleich an so nen check.
meistens (99,9%?) reicht es vollauf, wenn die klasse die gleiche schnittstelle hat. aber manchmal kann es dumm kommen, und man macht was ganz ungewöhnliches. ne unnormale schnittstelle. ein ".c_str()", was einen auto_ptr zurückgibt. ein konstruktor, der nix tut und noch init() verlangt ist. komische sachen halt. dann sagt man sich, wenn man die komischen sachen in seinem template benutzt: "uih, ich rufe das komische-sachen-benutzende template besser wirklich nur mit komischen klassen auf".
Irgendwie wird es zur Mode jeden Scheiss in nen Template zu packen,ob es nun Sinn macht oder auch nicht.
es übt. die gemeinde erforscht erstmal, was man alles mit templates machen kann. und das ist unglaublich viel mehr, als man ihnen ansieht. ist ein wenig, wie wenn man in assembler ein betriebssystem schreibt. und wir einzelnen wenden uns nicht ab, sondern sehen mit glänzenden augen, was die gurus machen und wollen im kleinen auch sowas machen. ist auch gut so. nur aus ner breiten basis entstehen bedeutende gurus in ausreichender menge, daß wir irgendwann mal beginnen können, dran zu glauben, daß wir in ansätzen c++ kapieren.
und es wird sich lohnen. wir erforschen ja nicht nur c++, sondern wir erforschen eigentlich, wie die c++-nachfolger aussehen könnten. was hat sich gelohnt, was war ein irrweg, was geht und was geht nicht?