AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Generics <> Templates ?

Ein Thema von Ghostwalker · begonnen am 29. Jun 2007 · letzter Beitrag vom 29. Jun 2007
 
DMW

Registriert seit: 6. Sep 2006
Ort: Münster
269 Beiträge
 
Delphi XE Professional
 
#3

Re: Generics <> Templates ?

  Alt 29. Jun 2007, 11:57
Templates sind statisch polymorph, sämtlicher typenspezifischer Code wird also zur Übersetzungszeit generiert. Das führt z.B. bei extensiver Verwendung von Template-Klassen wie der STL zu einem nicht unbeträchtlichen Code-Bloat, da sämtlicher Code für jede Typkombination, mit der das Template instantiiert wird, neu generiert wird.
Da der Code zur Compilierzeit an die Typen angepaßt werden muß, muß er dem Compiler auch zur Verfügung stehen; daher ist es nötig, die gesamte Implementation eines Templates in Headerdateien unterzubringen. (Es gibt dafür zwar das Schlüsselwort export, doch implementiert das praktisch kein Compiler.) Dies ist bei Generics nicht der Fall, da sie zur Laufzeit typisiert werden.

Generics sind allerdings derzeit dadurch im Vorteil, daß man die benötigte Schnittstelle angeben und dadurch undurchschaubaren Fehlermeldungen vorbeugen kann; das wird aber in C++0x mit Concepts auch möglich sein.

Und natürlich gibt es für Generics keine Wertparameter. Damit fällt ein Großteil der Möglichkeiten der Template-Metaprogrammierung weg, durch die in C++ ganz verrückte Dinge möglich werden, z.B. die Wahl eines Typs abhängig davon, ob zwei andere Typen gleich sind:
Code:
typedef IfThenElseType <TypesAreEqual <T, const T>::result,
    RandomIterator <const T, Base, direction, iter>,
    _some_struct_t>::type
        const_iterator_type;
Moritz
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz