Doppeltes template<>?



  • Ich benutze seit gestern TUT. Funktioniert wirklich super, einfach und ohne Makro-Magic. Da ich kein Metaprogramming-Crack bin, habe ich eine Frage zu folgendem Code:

    template<>
    template<>
    void object::test<1>()
    {
    }
    

    Ein einfaches template<> kenne ich bei Template-Spezialisierung. Was soll das doppelte template<> bewirken? Ist das eine Besonderheit von TUT oder gibts da allgemeine Erklärungen für?


  • Mod

    Da hast du es anscheinend mit einem doppeltem template zu tun, da ist das normal. Beispiel:

    // Beispiel für doppeltes Template
    template<typename T> struct foo{
      template<int N> int bar(){return N;}
    };
    
    // Und wie man es einfach spezialisiert:
    template<> template<int N> int foo<char>::bar(){return N+1;}
    
    // Oder auch doppelt:
    template<> template<> int foo<int>::bar<0>(){return -1;}
    


  • Artchi schrieb:

    Ich benutze seit gestern TUT. Funktioniert wirklich super, ...

    Hallo Artchi,

    Ich benutzte z.Zt. boost.test und bin damit relativ zufrieden. Was ist an TUT besser/schöner? Lohnt sich ein Umstieg - unter welchen Voraussetzungen?

    Gruß
    Werner



  • SeppJ schrieb:

    Da hast du es anscheinend mit einem doppeltem template zu tun, da ist das normal.

    Ui! Doppelte Templates kannte ich bisher noch gar nicht! 😮 OK, wieder was gelernt. Weiß ich jetzt wenigstens was ich da warum mache. 🙂 Vielleicht finde ich selber mal ein Anwendungsgebiet dafür.



  • Werner Salomon schrieb:

    Artchi schrieb:

    Ich benutze seit gestern TUT. Funktioniert wirklich super, ...

    Hallo Artchi,

    Ich benutzte z.Zt. boost.test und bin damit relativ zufrieden. Was ist an TUT besser/schöner? Lohnt sich ein Umstieg - unter welchen Voraussetzungen?

    Boost.test hatte ich mal vor ein paar Jahren ausprobiert. Letztens wollte ich es mal wieder nutzen, aber mußte feststellen, das die Dependencies (innerhalb Boost) zu groß sind. Ich habe deshalb auch Boost.signal wieder aus meinem Projekt verbannt. Wenn ich mein Projekt nicht für C++-Anfänger "freundlich" machen würde, würde ich die wahrscheinlich alle benutzen. In meinen eigenen Projekten benutze ich Boost aber ausgiebig (keine Rücksicht auf dritte nötig).

    Jedenfalls hat das Boost-Tool bcp.exe nicht das erfüllt was ich mir erhoffte. Mehrere Megabyte Sourcen (ein vielfaches von meinem eigenen Projekt) quer über alle Boost-Libs, und dann haben auch noch passende Build-Files gefehlt. Das war mir dann zum Übernehmen in das Opensource-Projekt zu viel.

    Für meinen speziellen Anwendungsfall ist TUT aber schön kompakt und es ist vor allem Header-only! D.h. ich habe wirklich nur ein paar Header-Dateien in mein Projekt kopiert, und gut ist. Meinen ersten Unittest konnte ich auch ruck zuck mit der readme.txt umsetzen. Für mich als der jenige, der das Projekt warten muß, am angenehmsten.

    Ein fehlendes Feature ist allerdings, das es einen nicht vor Memoryleaks warnt! Das konnte boost.test unter MSC natürlich.

    Ich benutze TUT erst seit gestern, kann deshalb jetzt nicht spontan jedem zu einem Umstieg raten. Ich weiß nur, das Nokia Siemens Networks auch eine Klasse beigesteuert hat (siehe deren Copyright in einer der Dateien). Man kann davon ausgehen, das die das produktiv nutzen.



  • @Artchi: Danke für's Feedback


Log in to reply