linux-l: C++ (templates, operator overloading)

Mathias Born mborn at faphida.in-berlin.de
Mo Aug 2 20:46:10 CEST 1999


Guenther Thomsen wrote:
> > Die Defintion der Template-Methoden darf natürlich nicht in einer
>       ^^^^^^^^^
> > CC-Datei
> > stehen, sondern in der zugehörigen H-Datei, also ungefähr so:
>  [..]
>  Wat? Im Stroustroup steht explizit [1] 'When a function definition is
> needed for a class template member function, for a particular type, it
> is the implementation's job to find the template for the member function
> and generate the appropriate version.'. Und weiter 'An implemmentation
> may require the programmer to help find templates unless some convention
> is obeyed'. Genau das tut g++. Nicht schoen, vor allem muss man sich im
> ...

Da g++ diesen "job of the implementation" nicht vernünftig beherrscht,
muß man tatsächlich für jeden benutzten Typ manuell instantiieren.
Das ist aber *nicht* die Art und Weise, wie ich mir die Verwendung
von Templates vorstelle. Der Vorteil der Templates ist ja gerade
die Automatisierung. Deshalb war der Tip von Michael, alles in die
Header-Datei zu packen, sehr gut!
Siehe auch die STL - die besteht praktisch nur aus Header-Dateien.

Ich kann den g++-Machern aber keinen Vorwurf daraus stricken,
schließlich war der Template-Entwurf übereilt, als Folge davon
ist die korrekte Realisierung im Compiler mit einem enormen
Aufwand verbunden.

Mathias

-- 
>From "info gcc":
  `-trigraphs'
      Support ANSI C trigraphs.  You don't want to know about this
      brain-damage.  The `-ansi' option implies `-trigraphs'.




Mehr Informationen über die Mailingliste linux-l