Template Instanziierung für den Bibliotheksgebrauch

8

Ich baue eine Bildverarbeitungsbibliothek in C ++ (0x), die stark auf Vorlagen basiert, und ich mache mir Sorgen über die Auswirkungen, die diese Templates auf die Kompilierzeiten der Benutzer haben werden. Zum Beispiel habe ich meine Bildklasse als ns :: Image definiert, und ich habe mehrere Pixeltypen wie ns :: PixRGB, ns :: PixRGBA, ns :: PixHSV, etc ...

Ich werde auch viele Bildverarbeitungsfunktionen, z.B.

%Vor%

Nun, ich weiß, dass 95% der Benutzer nur ns::drawCircle<PixRGB<byte>, PixRGB<byte>>(...) aufrufen wollen, also möchte ich explizit nur einige Kombinationen dieser Typen von Funktionen instanziieren, während der Compiler weiterhin benutzerdefiniert ist kompiliere alles, was ich nicht angegeben habe. Dadurch kann ich die Kompilierungsgeschwindigkeit einer gemeinsam genutzten Bibliothek und die Flexibilität einer reinen Header-Bibliothek beibehalten.

Ist diese Art von Sache möglich, und wenn ja, wie lautet die Syntax?

    
rcv 18.03.2011, 17:12
quelle

1 Antwort

9

Dies wird als explizite Instanziierung bezeichnet. In einer Header-Datei, nachdem die Funktionsvorlage ns::drawCircle<T,S> definiert wurde:

%Vor%

In einer * .cpp-Datei in Ihrer Bibliothek:

%Vor%     
aschepler 18.03.2011, 17:22
quelle

Tags und Links