Methodenpointer auf Templatemethode



  • Moin moin,

    ich brauche einen Methodenpointer auf eine Templatemethode:

    Mein Ansatz ist:

    // methode
    template <typename T>
    void 
    test(T t)
    {
    }
    // pointer
    template <typename T>
    void   
    (*t)(T) = &test;
    

    Dies gibt aber beim Kompilieren folgende Fehlermeldung:

    Fehler: Templatedeklaration von »void (* t)(T)«
    

    die Variane ohne Template kompiliert:

    // methode
    void 
    test(int t)
    {
    }
    // pointer
    void   
    (*t)(int) = &test;
    

    Was mach ich falsch? Wie muss es richtig heißen?

    cu
    Thundernail



  • Das geht nicht.
    Du kannst einen Zeiger auf genau eine Instanz eines Templates machen.
    Du kannst auch ein Template als "Template-Template-Parameter" übergeben.

    Du kannst aber nicht einen Zeiger machen der auf das Template an sich zeigt. Das wäre im Prinzip dasselbe wie virtuelle Template Funktionen. Beides ist in C++ nicht möglich, da C++ 1.) statisch typisiert ist und 2.) keine on-demand Code Erzeugung unterstützt (bzw. sagen wir so: keine Features die nur mit on-demand Code Erzeugung zu implementieren wären).


Anmelden zum Antworten